假设在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....
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |