Win32应用程序接口有一组InterlockedXXX函数来原子地同步操作简单的变量,但是似乎没有任何InterlockedRead函数来简单地检索变量的值。怎么会这样?
MSDN says表示:
对正确对齐的32位变量的简单读写都是原子操作
但补充说:
但是,不能保证访问是同步的。如果两个线程从同一个变量读取和写入,则无法确定其中一个线程是否会在另一个线程执行其写入操作之前执行其读取操作。
据我所知,这意味着一个简单的变量读操作可以同时进行另一个操作,比如InterlockedAdd操作。那么为什么没有一个互锁函数来读取变量呢?
我猜这个值可以被读取为InterlockedAdd-ing 0的结果,但这似乎不是正确的方法。
https://stackoverflow.com/questions/1084594
复制相似问题