- 论坛徽章:
- 0
|
原帖由 bobozhang 于 2008-8-24 18:12 发表
我觉得有些迷惑哈,既然是线程自己在那里处理自己的那个socket连接,那么socket断开后,你那个线程应该知道阿,这时退出线程就行了赛,还有就是你创建线程时要设置detach属性才能在线程退出时自动清理资源
你如果非要用pthread_kill的话也是可以的,你要首先为某个信号建立起handler,然后在这个handler中调用pthread_exit应该也可以吧
如果你要用pthread_cancel的话,你要明白线程并不是每时每刻都可以被cancel的,cancel只会发生在一些叫做cancel point的地方
我的程序都能灵敏的检测到socket的连接和断开,同时我也知道哪个线程对象负责哪个socket, 因此关闭socket就是关闭对应的线程所在对象,我在释放线程所在对象时就调用了关闭线程的方法,但对象的资源是释放了,但线程自身创建时占用的资源没有释放,哎,郁闷 ,
在大家的指点下,创建线程前设置了detach属性, 我在释放线程所在对象时先通过标志变量退出线程死循环,然后再调用了pthread_kill(),理论上感觉因该可以的,但事实上每用,我个人看法是可能哪些点我还没用好造成的 |
|