0

梦梦,

我需要 MS Visual C (6.0) 等效函数“DosEnterCritSec()”和“DosExitCritSec()”,它保证没有两个线程同时执行封闭的代码。

有人可以指出我正确的方向吗?

非常感谢,彼得

4

3 回答 3

2

EnterCriticalSection() / LeaveCriticalSection()

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682608(v=vs.85).aspx

于 2012-09-24T13:26:00.100 回答
1

是的,您将寻找关键部分。

在某个地方,通常在启动期间,您需要初始化:

CRITICAL_SECTION mutex;
InitializeCriticalSection(&mutex);

然后在您的重入代码中:

EnterCriticalSection(&mutex);
/* Do some thread-safe stuff */
LeaveCriticalSection(&mutex);

作为奖励,如果您在同一个线程中多次输入同一个关键部分,您不会将自己锁定(只要您离开它的次数相同)。

于 2012-09-24T13:28:07.030 回答
1

我不熟悉,DoesEnterCritSec()DosExitCritSec()基于:

没有两个线程同时执行封闭的代码。

您可以使用EnterCriticalSection()LeaveCriticalSection()。每个线程必须使用相同的 a 实例CRITICAL_SECTION

有关示例,请参阅使用关键部分。

于 2012-09-24T13:25:40.170 回答