我其实不明白你为什么一直假定没有synchronization。传值就是传值,传引用就是传引用。和synchronization有什么关系吗?
咱们拿个例子讨论下吧。就讨论有synchronization的情况。以下spin有什么问题?
void myprint(const std::string& str, std::atomic_bool &ready) {
while (!ready.get()) {}
std::cout << str << std::endl;
}
int main() {
std::string str;
std::atomic_bool ready(false);
std::thread t(myprint, std::cref(str), std::ref(ready));
str = "I'm ready";
ready.store(true);
t.join();
}
【 在 here080 的大作中提到: 】
: 加上了相关sync代码时编译器不优化和不加时编译器不优化是两个问题。不能用这个证明那个。
: 另外,这样写程序不管能不能跑,这个写法肯定是很有问题的。
--
修改:winterchill FROM 73.71.159.*
FROM 73.71.159.*