互锁交换结构
|
我想从WinAPI使用InterlockedExchange来使用线程的无锁同步。
目前,我有这样的课程。
struct DataExchange
{
volatile LONG m_value;
void SetValue(LONG newVal)
{
InterlockedExchange(&m_value, newVal);
}
LONG GetValue()
{
LONG workVal=0;
InterlockedExchange(&workVal, m_value);
return workVal;
}
};
一个线程可以设置一个新值,而另一个线程可以读取该值。
现在我要做的就是将ѭ1的值更改为struct
。
WinAPI中有什么方法可以免费复制struct
锁?
没有找到相关结果
已邀请:
4 个回复
摊揉售
拭十年
值放入一个结构中。 由于该函数是使用编译器内部函数实现的,因此它基本上是在x86上调用依赖于平台的汇编指令,例如
。由于该指令最多只能在64位寄存器源操作数,64位寄存器或存储器目标操作数以及
寄存器上工作(在64位平台上),因此只能执行某个大小的值使用单个汇编指令的原子操作,而无需合并某种类型的锁或信号量来创建关键部分。
迪擅哨乘傅
倾坞髓
函数,如果可以足够快地获得所有权,它将不会等待锁定。