我们在写线程的时候,多数都是while(1)的死循环;
此时要注意一下几点:
1)在死循环中,执行完一轮操作后,要sleep一下,释放cpu
2)一般会在函数中使用标志位来退出线程,退出死循环
void exitfunction(int flag)
{
if(flag == SIGTERM || flag == SIGQUIT || flag == SIGABRT)
{
qDebug() << "flag= << flag;
iExitFlag = 1;
qDebug() << "Exit!";
sleep(3); // 等待线程结束
exit(EXIT_SUCCESS);
}
}
int main()
{
if(signal(SIGABRT, exitfunction) < 0 ||
signal(SIGTERM, exitfunction) < 0 ||
signal(SIGQUIT, exitfunction) < 0 )
{
qDebug() << "signal";
exit(EXIT_FAILURE);
}
}
void* pthread_fun(void *arg)
{
//do sth.
while(1)
{
if(iExitFlag==1)
{
//do sth.
//比如,close fd;
// free(pt);
//return; //退出线程,退出死循环
//pthread_exit(0);
}
}
}