线程安全变量 comaprison C VS2010

thread-safe variables comaprison C VS2010

线程编程

我想写一个简单的多线程应用程序。

每个线程打开时我都会将(使用InterlockedIncrement)成员递增一个, 并在线程完成时递减它(使用 InterlockedDecrement

我知道 Mutex/Semaphore/event

但我会更干净/简单的方法来实现类似于 Interlocked 函数的比较。

接下来我需要的是实现比较函数[if(member == x)]

简单示例:

线程 1 函数:

{
//do somthing 
InterlockedDecrement(member);
}

线程 2 函数:

{
//do something else
InterlockedDecrement(member);
}

主线程函数:

{
  while(member)//<--how can it be done in thread safe fashion
  {
    //do yet another something
  }
}

使用 InterlockedAdd 并添加 0。这将锁定成员和 return 值而不更改它:

while (InterlockedAdd(&member, 0) == someValue) 
{
    //do yet another something
}