互锁函数c ++

sig*_*sen 0 c++ multithreading interlocked shared-memory

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

我们假设我有volatile unsigned int n, a, b.我想原子地执行以下伪代码:

if (a <= n && n < b)
{
    n++;
}
else
{
    //Do nothing
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?你可以一起使用多个互锁功能吗?

Dav*_*nan 5

您需要锁定或CAS类型操作.没有多少volatile可以帮助到这里.真正的原子数据类型也不会.

  • CAS非常适合这种类型的操作.好决定.这是[一些例子](http://blogs.msdn.com/b/oldnewthing/archive/2004/09/15/229915.aspx). (2认同)
  • @vcs @ben刚提到雷蒙德通常值得一些赞成 (2认同)