[英]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.