日期:2014-05-16  浏览次数:20648 次

Linux下结束线程问题
在Linux下,pthread_create()动态创建线程,比如20个,线程函数的名字都是thread,pthread_create(&id,NULL,(void *)thread,NULL);我在这20个thread中都调用pthread_exit(NULL);来结束线程,这样子会出问题吗?能正常结束线程吗?

------解决方案--------------------
++1
也可以 phread_join(&tid,null);
------解决方案--------------------
引用:
引用:引用:引用:++1
也可以 phread_join(&tid,null);
我想在线程内自己关闭自己。

那就是这样用pthread_exit.
pthread_join是错误的,这个是等待别的线程结束..
……


pthread_exit本来就是用来结束***自身(线程)***的,当然不会影响别的线程了.
就像exit是用来**自身(进程)**一样.
------解决方案--------------------
引用:
引用:引用:引用:引用:引用:++1
也可以 phread_join(&tid,null);
我想在线程内自己关闭自己。

那……

我可以肯定,电脑关机重启不会是由于你的程序使用了pthead_exit函数导致的..不然linux系统就若暴了.
要关机,至少得有root权限,并且得调用了一些重启的api才行.
所以你看你的程序运行时是否使用的root权限..有没有会导致重启的api , 如果不是,就该考虑别的问题了.
查看下系统日志吧,/var/log/syslog  var/log/auth.log  等..
------解决方案--------------------
楼主还是dmesg看一下重启原因吧,感觉你太盲目了。