繁体   English   中英

信号量功能

[英]Semaphore functions

莫恩 - 莫恩,

我需要等效于MS Visual C(6.0)的函数“ DosEnterCritSec()”和“ DosExitCritSec()”,这确保没有两个线程同时执行所包含的代码。

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

非常感谢,彼得

EnterCriticalSection()/ LeaveCriticalSection()

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

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

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

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

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

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

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

CRITICAL_SECTION mutex;
InitializeCriticalSection(&mutex);

然后在您的重入代码中:

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

另外,如果您在同一线程中多次输入同一关键部分,则不会被锁定(只要保留相同的次数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM