C++线程同步和缓存一致性

问题描述 投票:0回答:1

我正在阅读有关线程同步的内容,并开始了解好像https://en.cppreference.com/w/cpp/language/as_if

我的问题是编译器有可能以始终打印 10 的方式重新排列/优化下面的代码,尽管 a 在主线程中被修改了。我已捕获 a 作为 const_refrence。

#include <thread>
#include <chrono>
int main()
{
    int a = 10;
    std::thread t([&b = const_cast<const int&>(a)]{while(true){std::cerr<<b<<std::endl; std::this_thread::sleep_for(std::chrono::seconds(1));}});
std::this_thread::sleep_for(std::chrono::seconds(5));
a =20;
    t.join();
    return 0;
}

目前它按预期工作。

c++ multithreading c++11 caching
1个回答
0
投票

Hiiudddddxwsjnmuhderdbwnkqslpajkhgmvbjkwls;dkjhgcfvebwkl;qdejhfvdbnmeujhcmndsewjhsn

© www.soinside.com 2019 - 2024. All rights reserved.