[過去ログ] マルチスレッドプログラミング相談室 その3 (978レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
736
(5): 2005/07/05(火)10:04 AAS
クラス内の関数をスレッド化することを考えています。

    for (int i=0;i<threadnum;i++)
    {
        if(pthread_create(&tid[i],NULL,(THREADFUNC)threadRoutine,(void*)i) != 0)
        {
            perror("pthread_create");
        }
    }

と書くと、3行目のところで
error: invalid use of member (did you forget the '&' ?)
というエラーが出てしまいます。

プライベートメンバ関数の
threadRoutine

void threadRoutine(void* pParam);
と宣言するところを
static void threadRoutine(void* pParam);
にすると、コンパイル可能なようなのですが、今度は、そのメンバ関数内で、staticではないメンバ変数が使えなくなってしまいます。
どのようにすればよいのでしょうか?
737: 736 2005/07/05(火)10:06 AAS
(THREADFUNC)、tidはそれぞれ

typedef void *(*THREADFUNC)(void *);
pthread_t   tid[threadnum];

です。
743: 2005/07/05(火)23:37 AAS
AA省
745
(2): 2005/07/06(水)06:21 AAS
>>736
関数はstaticにして、クラス内の変数を使いたければ、クラス自体をその関数に
ポインタとして渡すしかない。
747: 2005/07/06(水)09:09 AAS
>>736
Javaつかえ。C++はあまりマルチスレッド向きではない。
748
(1): 736 2005/07/06(水)14:25 AAS
ここは荒れたスレのようですね。他に行きます。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s