返回信息流腾讯2008笔试题最后一道:
2. 假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.
没怎么用过多线程,请问大概思路是什么啊
这是一条镜像帖。来源:北邮人论坛 / soft-design / #30564同步于 2008/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[请教]多线程安全退出机制
metal
2008/10/17镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 metal 的大作中提到: 】
: 腾讯2008笔试题最后一道:
: 2. 假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.
: 没怎么用过多线程,请问大概思路是什么啊
感觉这里说的“程序中止运行”应该不是正常退出吧,正常退出也没什么必要考了吧
【 在 windam 的大作中提到: 】
: 就算是非正常退出,进程结束的时候系统也会回收所有资源的。。。
: 这题目可能考的是线程同步吧。。。
线程同步和安全退出所有线程有什么关系?
听说进程结束,如果子线程结束时主线程先行退出会出现僵死线程,这个资源的释放好像是不彻底的,会不会是指这方面呢?
概念有点混乱了,达人给做下深入分析啊
不知道主线程退出,会不会子线程资源不释放。
反正主线程是可以被join的,然后会等所有的子线程完成操作以后,才退出。
但是对于子线程是循环的场景,没有考虑过。
程序终止运行,要么是正常结束,要么是出现异常,如果在主线程中创建了子线程,要想在主线程结束运行或是出现异常的时候,也终止子线程的运行,释放子线程的所有资源,需要在编写代码是注意:
在子线程中要有一个标志位,子线程根据该标志来判断是否还要继续运行,子线程中应该用方法供主线程调用,来操作该标志位。
如果程序正常运行结束,要在结束之前,在主线程中修改该标志位,让子线程停止运行,释放相应的资源;
如果出现异常,在异常处也要能修改该标志位,好让子线程停止运行。
如果是子线程中出现异常,方法与上面类似。
以上仅是个人观点。
总之主线程结束之前应该让子线程先终止、释放资源,对吧。设置标志位是一个方法。
【 在 walsh (mackie) 的大作中提到: 】
: 程序终止运行,要么是正常结束,要么是出现异常,如果在主线程中创建了子线程,要想在主线程结束运行或是出现异常的时候,也终止子线程的运行,释放子线程的所有资源,需要在编写代码是注意:
: 在子线程中要有一个标志位,子线程根据该标志来判断是否还要继续运行,子线程中应该用方法供主线程调用,来操作该标志位。
: 如果程序正常运行结束,要在结束之前,在主线程中修改该标志位,让子线程停止运行,释放相应的资源;
: ...................