联锁函数c++

Interlocked functions c++

本文关键字:c++ 函数      更新时间:2023-10-16

我正在开发一个使用共享内存和联锁功能的系统。

假设我有volatile unsigned int n, a, b。我想自动执行以下伪代码:

if (a <= n && n < b)
{
    n++;
}
else
{
    //Do nothing
}

我该怎么做呢?你能同时使用多个互锁函数吗?

您需要一个锁或CAS类型的操作。再多的volatile也没用。真正的原子数据类型也不会。

同步原语(如信号量、互斥锁等)由特定于操作系统的库提供,而不是由语言本身提供。C/c++没有内在的"synchronized"关键字。

如果你在Linux上编程,看看Posix线程或Boost库:

http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html

如果你在本地Windows Win32 (Win98或更高版本)上编程,你可以使用像EnterCriticalSection()和InterlockedAdd()这样的api,以及其他:

http://msdn.microsoft.com/en-us/library/ms686353%28v=VS.85%29.aspx

如果你在用。net编程Windows,那么你就回到了同步原语作为标准。net库的一部分:

http://msdn.microsoft.com/en-us/library/ms173179.aspx

希望这对你有帮助。PSM