首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++多线程,安全,快速的结束线程。解决方案

2012-04-03 
C++多线程,安全,快速的结束线程。怎么在线程外结束线程?-线程外包别人的一个函数。HasCodingEx()这个函数运

C++多线程,安全,快速的结束线程。
怎么在线程外结束线程?
-
线程外包别人的一个函数。
HasCodingEx();
这个函数运行很耗时间,3min。
-
1.TerminateThread()很明显,不安全,但是很快速。用了之后,出现了内存泄露。
2.用信号,效率不高。
怎么才能两全?

[解决办法]
创建一个进程去跑这个函数。
[解决办法]
TerminateThread()在仅仅是内存泄露问题。如果线程正在一个critical section,你结束他,将被锁定。
结束线程前先捕捉异常,再结束他。
[解决办法]
各种pthread_cancel之类的函数都不应该被使用,尽量用条件变量+quit变量+mutex或者select+管道或者原子变量+信号。

看你线程本身的工作模型了。
[解决办法]
那个进程是干什么的?
如果正在更新某个公用的数据结构,就会导致那个数据结构处于不一致的状态
如果使用了semaphore来控制对某个资源的访问,这样就可能导致其他任务无限等待

热点排行