我有一个classA创建一个线程,我希望线程运行,直到一个变量设置为false。c + + pthread不工作
创建线程,如:
ClassA::ClassA():
m_bContinue(true),
{
pthread_mutex_init(&m_mutex, NULL);
pthread_create(&m_thWorkThread, NULL, &ClassA::ThreadProc, this);
}
我想线程只要运行的pClassA->继续()返回true。
void* ClassA::ThreadProc(void *p) //ThreadProc defined as static member function
{
ClassA *pClassA = reinterpret_cast<ClassA*>(p);
if(pClassA != NULL)
{
while(pClassA->Continue())
{
printf("in the while \n ");
}
}
else
printf("pClassA null \n");
}
继续正在返回在构造函数中设置为true的m_bcontinue。
bool ClassA::Continue()
{
return bContinue;
}
当我运行它,它只是进入while循环一次,并打印“的同时”,并计划停止。当我执行strace时,我看到了由SIGSEGV +++杀死的消息+++。 当我改变像while循环:
while(1){}
能正常工作。我错过了什么?
你是什么意思“正常功能”?在我的情况下,我将ThreadProc定义为静态成员函数。你的意思是用ThreadProc函数定义另一个类吗? –
@AvbAvb啊,它是静态的。正常我的意思是非成员函数,但静态也很好。那么你的代码很好,它在while循环中崩溃可能是因为在其他地方的堆损坏。 –