【发布时间】:2012-01-03 04:55:39
【问题描述】:
我对 C++11 中的新线程有点困惑。我知道了如何使用互斥锁来阻止两个线程同时对同一数据进行操作,但是如何分配给该数据呢?
例子!
class Foo
{
std::string s;
// This would be called on a seperate thread
void Bar() { s = std::string( "blah blah blah" ); }
};
所以我要问的是,因为我给 s 分配了一些东西,成员变量 s 是否总是停留在同一个内存位置,而分配只是改变内部数据,在这种情况下我只需要一个互斥体?或者我仍然可以遇到缓存值和意味着我需要开始使用 atomic 以确保我拥有最新数据的情况吗?还是仅适用于 int 或 structs 等类型?
【问题讨论】:
标签: c++ multithreading thread-safety c++11 atomic