Linux 版 (精华区)
发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标 题: NACHOS论坛(7)
发信站: 紫 丁 香 (Sun Nov 8 17:29:46 1998), 转信
寄信人: ship.bbs@bbs.xmu.edu.cn
标 题: NACHOS论坛(7)(转寄)
发信站: 华南理工大学 BBS木棉站
日 期: Sun Mar 9 15:02:51 1997
作 家: solmon (所罗门王) on board 'Unix'
题 目: NACHOS论坛(7)
来 源: 鼓浪听涛站
日 期: Thu Mar 6 23:07:20 1997
出 处: mysu@JingXian.xmu.edu.cn
在NACHOS中有一个小错误.
NACHOS用一个全局变量标志当前需要Destroy的Thread.这个标志在各线程进行
Switch时,可能被设置.实际上,这就是被调度下去的线程正要被Destroy.NACHOS的作
者在呼叫Switch函数后,立即检查这个标志是否设定了,如果设定了,那么就真正地完
成Destroy的动作.但此时,当前的活跃线程实际上是新调度上来的那个线程.如果新
调度上来的线程没有从Switch函数中出来(只有一种情况会这样,那就是这个线程是
刚刚启动的,所以进入了ThreadRoot,而非Switch),那么这个要被Destroy的线程就会
被搁置在那里,没有立即被删除调.当然,下一次Switch时,也有机会删除这个线程,但
是如果这个新被调度上来的线程正好也死去了,那么这个标志将会被覆盖,前面的那个
线程的Destructor不会被叫用.
综合上述,我们可以知道,在下面的情况下,NACHOS会产生一个错误:
1.一个线程死去了,而新调度上来的那个线程是一个刚刚创建的线程.
2.这个刚刚创建的线程在下一次被调度下去时,也死去了.
产生的错误是前面死去的那个线程的Destructor没有被叫用,它占用的资源没有
被释放.
--
m※ 来源:.鼓浪听涛站 bbs.xmu.edu.cn.[FROM: mysu@JingXian.xmu.ed] m
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.223毫秒