本帖最后由 chenzhanyiczy 于 2013-07-05 17:06 编辑 [code]class Info { public: ~Info() { printf("~Info()\n"); //-----1 } }; void thread_cleanup(void* arg) { printf("thread id=%lu cleanup\n",pthread_self()); //-----2 } void* func(void *arg) { int tick; pthread_setcancelstate(pthread_cancel_ENABLE, NULL); pthread_setcanceltype...
by chenzhanyiczy - C/C++ - 2013-07-09 11:41:19 阅读(1829) 回复(6)
某个线程,如果执行时间超过10小时还没有结束,希望能够在主线程中终止掉这个线程。 我现在直接调用pthread_cancel 后来网上查了一下,说这个函数不宜使用,调用的时候具体会做什么事情呢? 有什么需要注意的事项吗? 刚接触linux线程编程,哪位有相关资料能不能共享一下?
请教各位 我在一个线程中定义了rtp报文发送,发送之前bind了发送端口,这个线程不停地发送。 我使用pthread_cancel 结束这个线程。 我的疑问是: 1.线程占用的资源有没有释放,还是说要主程序结束时,才会真正释放呢? 2.第二个问题和第一个相关,就是我在发送时设置的socket文件描述符,在线程cancel时,close了吗? 现实的情况是, 我第一次调用发送线程后,cancel它。 在主程序没有结束之前,再次调用发送线程,...
请问使用pthread_cancel停止线程是否安全? 我尝试pthread_cancel(0),会出现内存错误导致进程死掉,这是为什么呢?我man了pthread_cancel,它说如果要停止的线程pthread_t不存在,会报错,但是应该不会杀死进程啊? 谢谢
这里人气旺,请教个问题 我在一个线程中定义了rtp报文发送,发送之前bind了发送端口,这个线程不停地发送。 我使用pthread_cancel 结束这个线程。 我的疑问是: 1.线程占用的资源有没有释放,还是说要主程序结束时,才会真正释放呢? 2.第二个问题和第一个相关,就是我在发送时设置的socket文件描述符,在线程cancel时,close了吗? 现实的情况是, 我第一次调用发送线程后,cancel它。 在主程序没有结束之前,再次...
请问,我在用pthread_cancel函数取消一个线程时,但该线程并没有设置取消点,可是运行出来的结果却和理论值两样。因为我在线程中用了一个for(;;),照理该线程应该一直循环下去,可是该线程却可以退出。该程序如下:
#include
很简单的情况,创建两个线程,第2个去cancel第1个。
但如果 f1 中的 localtime_r 和 sem 同时打开执行, f2 在 join时阻塞;
如果只开任何一个, f2 的join 成功。
困惑中,请高手指点! (redhat 8.0)
#include <pthread.h>
#include
很简单的情况,创建两个线程,第2个去cancel第1个。
但如果 f1 中的 localtime_r 和 sem 同时打开执行, f2 在 join时阻塞;
如果只开任何一个, f2 的join 成功。
困惑中,请高手指点! (redhat 8.0)
#include <pthread.h>
#include
代码如下:
#define _MULTI_THREADED
#include
求教各位大神,我的程序设定了一个计时功能,即一个程序用pthread_cond_timedwait等待30秒如果30秒没有结束我就用pthread_cancel杀死线程,但是我在调试的时候发现pthread_cancel好像用的有点问题,我写了一个关于pthread_cancel的例子(跟超时没关系,只是测试下pthread_cancel)果然有问题麻烦给看一下,我急用,感激涕零阿
#include