我希望能够实现以下内容:
inline void DecrementPendingWorkItems()
{
if(this->pendingWorkItems != 0) //make sure we don't underflow and get a very high number
{
::InterlockedDecrement(&this->pendingWorkItems);
}
}
我该如何做,以使这两个操作作为一个原子块执行,而不使用锁?
pendingWorkItems
为零或负数,您应该使用>
比较运算符。它可以防止pendingWorkItems
变为负数的错误。 - Some programmer dudeInterlockedDecrement
接受指向LONG
的指针,实际上是一个有符号值。 - dgnuff