📄 00000007.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: raner (lilo), 信区: Linux <BR>标 题: NACHOS论坛(7) <BR>发信站: BBS 水木调试站 (Thu Jun 4 16:50:53 1998) <BR> <BR>作 家: solmon (所罗门王) on board 'Unix' <BR>题 目: NACHOS论坛(7) <BR>来 源: 鼓浪听涛站 <BR>日 期: Thu Mar 6 23:07:20 1997 <BR>出 处: <A HREF="mailto:mysu@JingXian.xmu.edu.cn">mysu@JingXian.xmu.edu.cn</A> <BR> <BR> 在NACHOS中有一个小错误. <BR> <BR> NACHOS用一个全局变量标志当前需要Destroy的Thread.这个标志在各线程进行 <BR>Switch时,可能被设置.实际上,这就是被调度下去的线程正要被Destroy.NACHOS的作 <BR>者在呼叫Switch函数后,立即检查这个标志是否设定了,如果设定了,那么就真正地完 <BR>成Destroy的动作.但此时,当前的活跃线程实际上是新调度上来的那个线程.如果新 <BR>调度上来的线程没有从Switch函数中出来(只有一种情况会这样,那就是这个线程是 <BR>刚刚启动的,所以进入了ThreadRoot,而非Switch),那么这个要被Destroy的线程就会 <BR>被搁置在那里,没有立即被删除调.当然,下一次Switch时,也有机会删除这个线程,但 <BR>是如果这个新被调度上来的线程正好也死去了,那么这个标志将会被覆盖,前面的那个 <BR>线程的Destructor不会被叫用. <BR> 综合上述,我们可以知道,在下面的情况下,NACHOS会产生一个错误: <BR> 1.一个线程死去了,而新调度上来的那个线程是一个刚刚创建的线程. <BR> 2.这个刚刚创建的线程在下一次被调度下去时,也死去了. <BR> 产生的错误是前面死去的那个线程的Destructor没有被叫用,它占用的资源没有 <BR>被释放. <BR> <BR> <BR>-- <BR>m※ 来源:.鼓浪听涛站 bbs.xmu.edu.cn.[FROM: <A HREF="mailto:mysu@JingXian.xmu.ed]">mysu@JingXian.xmu.ed]</A> m <BR> <BR>-- <BR>※ 来源:·BBS 水木调试站 Leeward.lib.tsinghua.edu.cn·[FROM: 166.111.68.98] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -