[過去ログ] マルチスレッドプログラミング相談室 その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