我們在寫線程的時候,多數都是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);
}
}
}