【初心者歓迎】C/C++室 Ver.19【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0397デフォルトの名無しさん
2005/07/06(水) 14:28:15for (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ではないメンバ変数が使えなくなってしまいます。
メンバ関数をstatic関数にせずに、マルチスレッド化するにはどのようにすればよいのでしょうか?
(THREADFUNC)、tidはそれぞれ
typedef void *(*THREADFUNC)(void *);
pthread_t tid[threadnum];
です。
■ このスレッドは過去ログ倉庫に格納されています