LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1730|回复: 3

pthread_cancel疑问

[复制链接]
发表于 2009-1-13 00:27:11 | 显示全部楼层 |阅读模式
请教各位:

我在一个线程中定义了rtp报文发送,发送之前bind了发送端口,这个线程不停地发送。



我使用pthread_cancel 结束这个线程。



我的疑问是:

1.线程占用的资源有没有释放,还是说要主程序结束时,才会真正释放呢?



2.第二个问题和第一个相关,就是我在发送时设置的socket文件描述符,在线程cancel时,close了吗?



现实的情况是,

我第一次调用发送线程后,cancel它。

在主程序没有结束之前,再次调用发送线程,返回bind 错误,重复绑定。

是不是线程的资源没有被释放?


谢谢!
发表于 2009-1-13 10:43:13 | 显示全部楼层
从来不用pthread_cancel
要退出自己检查个标志
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-13 13:58:04 | 显示全部楼层
Post by x11;1937582
从来不用pthread_cancel
要退出自己检查个标志


这思路很不错!谢谢。
回复 支持 反对

使用道具 举报

发表于 2009-2-8 19:12:43 | 显示全部楼层
打个比方,主线程为君,服线程为臣,
臣反了错,君要臣喝*死了,臣喝了死了,一了百了了,
但是臣生前欠下好多的债(比如分配了内存),就没法还了。
事实上臣未必会喝,喝了也未必会立刻就死。POSIX线程
定义了其他几个函数, 介绍了这几种情况。
      int pthread_setcancelstate(int state, int *oldstate);
       int pthread_setcanceltype(int type, int *oldtype);
       void pthread_testcancel(void);

楼上的提议不错。不使用这个方法。
以前我做程序的时候用过这个cancel,可是很麻烦.
后来用变量做,甚是简洁。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表