gpt4 book ai didi

c++ - C++中跨线程的变量可见性

转载 作者:行者123 更新时间:2023-12-02 10:11:15 37 4
gpt4 key购买 nike

给定以下代码,是否可以保证看到a的最新值4?

int a;
mutex mtx;
void f() {
unique_lock<mutex> lck(mtx);
// read(a);
// is it guarantee it will see the value 4?
}

int main() {
a = 4;
thread(f);
}

最佳答案

是的,可以保证:

32.4.2.2 Constructors [thread.thread.constr]

Synchronization: The completion of the invocation of the constructorsynchronizes with the beginning of the invocation of the copy of f.


换句话说,在原始执行线程中发生的 std::thread本身的构造与线程函数调用的开始同步。或者,换句话说:在原始函数中,在构造 std::thread之前发生的所有事情在线程函数中都是可见的。

关于c++ - C++中跨线程的变量可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63483022/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com