梦梦,
我需要 MS Visual C (6.0) 等效函数“DosEnterCritSec()”和“DosExitCritSec()”,它保证没有两个线程同时执行封闭的代码。
有人可以指出我正确的方向吗?
非常感谢,彼得
EnterCriticalSection() / LeaveCriticalSection()
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682608(v=vs.85).aspx
是的,您将寻找关键部分。
在某个地方,通常在启动期间,您需要初始化:
CRITICAL_SECTION mutex;
InitializeCriticalSection(&mutex);
然后在您的重入代码中:
EnterCriticalSection(&mutex);
/* Do some thread-safe stuff */
LeaveCriticalSection(&mutex);
作为奖励,如果您在同一个线程中多次输入同一个关键部分,您不会将自己锁定(只要您离开它的次数相同)。
我不熟悉,DoesEnterCritSec()
但DosExitCritSec()
基于:
没有两个线程同时执行封闭的代码。
您可以使用EnterCriticalSection()
和LeaveCriticalSection()
。每个线程必须使用相同的 a 实例CRITICAL_SECTION
。
有关示例,请参阅使用关键部分。