永发信息网

线程,如何通过pthread_t这个线程id判断线程是否已经终止

答案:1  悬赏:30  手机版
解决时间 2021-03-23 15:10
  • 提问者网友:疯子也有疯子的情调
  • 2021-03-23 06:12
线程,如何通过pthread_t这个线程id判断线程是否已经终止
最佳答案
  • 五星知识达人网友:逐風
  • 2021-03-23 07:05
还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。pthread_kill(threadid, SIGKILL)也一样,杀死整个进程。如果要获得正确的行为,就需要在线程内实现signal(SIGKILL,sig_handler)了。OK,如果int sig是0呢,这是一个保留信号,一个作用是用来判断线程是不是还活着。我们来看一下pthread_kill的返回值:成功:0线程不存在:ESRCH信号不合法:EINVAL所以,pthread_kill(threadid,0)就很有用啦。int kill_rc = pthread_kill(thread_id,0);if(kill_rc == ESRCH)printf("the specified thread did not exists or already quit\n");else if(kill_rc == EINVAL)上述的代码就可以判断线程是不是还活着了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯