CriticalSection用来。。。

CriticalSection

3个穷人A、B、C,只有一辆自行车。A想出去吃饭,B想去逛街,C想去见女朋友。都要用车。A抢先骑车出去吃饭,B、C只能等待。等A吃饭完毕回到家,B、C抽扑克比大小,B赢了骑车去逛街,到深夜才回来。C放弃会见女友,放弃自行车。

这时自行车Free,A,B,C都可以使用。

第二天。A想出去吃饭,B想去逛街,C想去见女朋友。都要用车。A再次抢先骑车出去吃饭,B、C又想去逛街会、女友,只能等待。等A吃饭完毕回家,(C去上个厕所)B骑车去逛街,到深夜交车给C,C(痛哭)再次用车失败。

这里,自行车就是CriticalSection。A、B、C为线程。吃饭,逛街,见女朋友就是CriticalSection中的代码。

当然B、C也可以是去吃饭,而不是逛街约会。(即执行相同代码段。)

PS。默认A、B、C不能帮忙带饭,不能骑车带人去吃饭,等等。

原文地址:https://www.cnblogs.com/WeRtogether/p/1608891.html