- 论坛徽章:
- 17
|
本帖最后由 asuka2001 于 2011-11-23 18:07 编辑
这个LZ是为了研究多线程的调度,倒没必要这么要求,只是觉得这种用法很谋杀脑细胞啊 :)
假设在LZ的系统上线程先创建,必定先执行,简单起见,只模拟3个线程A, B, C,以";"作为系统调度表示。
如果有黄色的sleep:
1. lock A, 输出 A, sleep; lock B, 输出 B, sleep; lock C, 输出C, sleep;
输出为ABC
2. unlock B, lock A阻塞; unlock C, lock B, 输出B, sleep; unlock A, lock C, 输出C, sleep;
3. lock A, 输出A, sleep;
输出为BCA
下次的话B先, 但是A还没给它解锁, 所以输出为CAB....
上次提出的那个模拟的确没考虑红色sleep的情况,这个还得再琢磨,让我更头痛了。
不过那是按照顺序调度想的,第2次B之所以先运行是因为它先进sleep,C其次,A是最后进sleep的;所以调度B先执行应该是符合顺序调度的。
这个LZ提供点程序运行结果吧,我已经解释不通了,还是看实际结果得了。 |
|