我正在努力学习有关同步的知识,并了解要想正常工作,需要满足3个条件2)有界等待-线程不会永远什么都不做我不完全理解为什么下面的代码不能工作。根据我的记录,它是互斥的,但不能满足不断进步或有限的等待。为什么?每个线程都可以做一些事情,只要现在线程崩溃了,每个线程都会轮流。以下是共享变量turn == i: Pi can enter its critical sectiondo {
while (turn != i)
这是我的代码的一小部分:InitializeCriticalSection(&_cs);
if (_initizalized){ EnterCriticalSection(&_cs); }(我写了两次"EnterCriticalSection“,因为我注意到这一行不起作用)据我所知,这肯定会导致死锁。但事实并非如此,为什么?
我不确定我是否理解正确。TryEnterCriticalSection只调用一次,它不像EnterCriticalSection那样粘滞?例如,如果我写下这样的代码{LeaveCriticalSection(&cs);else//do other job//go on
如果TryEnterCriticalSection返回false,部分do something that must be synh将永远不会完成,do oth