pthread没有静态成员函数

时间:2014-02-06 09:25:18

标签: c++ multithreading pthreads

我有一个ClassB,它有一个线程对象和一个定义为:

的函数
pthread_t m_thWorkThread;
void* ThreadProc(void *);

在ClassB的构造函数中,我创建了一个类似的线程:

pthread_create(&m_thWorkThread, NULL, &(ClassB::ThreadProc), this);

但是我收到两条错误消息:

错误:ISO C ++禁止获取非限定或带括号的非静态成员函数的地址,以形成指向成员函数的指针。

无法将变量*(ClassB :: )(void ) - 转换为变量*()(void )â为参数â3到âintpthread_create(pthread_t *,const) pthread_attr_t *,void *()(void ),void *)â    pthread_create(& m_thWorkThread,NULL,&(ClassB :: ThreadProc),this);

但是,如果我将该函数定义为static,则不会抱怨:

static void* ThreadProc(void *);

但是我不希望它是静态的,因为我将创建多个线程,并且我希望每个线程都有一个单独的ThreadProc函数。

0 个答案:

没有答案