Chinaunix

标题: 关于进程KILL子线程的问题 [打印本页]

作者: andrew913    时间: 2008-10-16 15:32
标题: 关于进程KILL子线程的问题
现在一个进程很多子线程在运行,现在我要KILL某个子线程,该怎么做,貌似会有很多资源问题哦
谁能给个解释不不?
谢谢了哈
作者: MMMIX    时间: 2008-10-16 15:36
看看 apue2 相关章节
作者: andrew913    时间: 2008-10-17 09:41
标题: 回复 #2 MMMIX 的帖子
好的,谢谢楼上的。

我目前的线程不是个死循环,应该不需要用到kill,只要pthread_detach这个函数应该就能自动释放资源了
作者: MMMIX    时间: 2008-10-17 09:53
标题: 回复 #3 andrew913 的帖子
kill 是用来发信号的
作者: andrew913    时间: 2008-10-17 10:01
标题: 回复 #4 MMMIX 的帖子
我知道kill是发信号的啊,我现在貌似不需要发信号了。
谢谢了哈

作者: pushion    时间: 2008-10-17 11:23
用pthread_cancel来kill,而且pthread是基于内核线程实现的,不是依赖于进程之上的子调度
作者: andrew913    时间: 2008-10-17 11:33
标题: 回复 #6 pushion 的帖子
pthread_cancel
不会释放拥有的资源的吧

具体我还没测试过
作者: pushion    时间: 2008-10-17 14:04
貌似pthread_join会释放
如果如果先pthread_detach的话,则不需要join函数就会释放
作者: andrew913    时间: 2008-10-17 14:44
标题: 回复 #8 pushion 的帖子
用了pthread_detach,就可以自动释放

或者用pthread_join来释放
作者: Cyberman.Wu    时间: 2008-10-17 16:03
没看过Linux的线程实现,不过理论上说不管什么系统,杀线程对于资源占用总是一个问题,因为线程之前共享了许多全局的东西,如堆里面申请的空间?理论上可以给每一个内存块设计一个线程标准,退出时全部释放掉,但实际上这样做需要额外的空间和时间,以前见过的一些系统好像没这样实现的。另外如果线程正在占有信号量,并且要互斥的资源处理了一半,退出线程时知道能知道需要做什么?最多也只有象Windows上一样设置一个特殊的状态而已,具体的资源是用户程序的,系统本身没办法知道应该如何去处理。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2