Possible Duplicate:
Do I need to use locking with integers in c++ threads
普通 int 访问器中的关键部分实际上有什么用处吗?
int GetFoo()
{
CriticalSection(crit_id);
return foo;
}
void SetFoo(int value)
{
CriticalSection(crit_id);
foo = value;
}
两个线程是否可以同时尝试读取和写入 foo?我本来认为“不”,除非整数是一次一个字节地写入的,在这种情况下我可以看到它的用途。但我认为现代 CPU 会在单个原子操作中读取/写入整数......
最佳答案
只要您使用内存对齐的 native 字长整数,读取就是原子的,并且可以在不锁定的情况下完成,但写入可能会引起竞争条件,因此必须锁定。如果变量没有内存对齐,可能会导致多核/多CPU环境中的不一致。
关于c++ - 围绕整数 getter 和 setter 的关键部分是否多余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062845/