优化了吧
【 在 libgcc 的大作中提到: 】
:
: #include <stdio.h>
: #include <string>
: #include <atomic>
: #include <thread>
: #include <chrono>
:
: using namespace std;
:
: int tag = 0;
: void func1()
: {
: std::this\_thread::sleep\_for(chrono::milliseconds(100));
: tag = 1;
: //std::atomic\_thread\_fence(std::memory\_order\_relaxed);
: }
:
: void func2()
: {
: while(tag == 0);
: //std::atomic\_thread\_fence(std::memory\_order\_relaxed);
: }
: int main()
: {
: thread t1(func1);
: thread t2(func2);
:
: t1.join();
: printf(" t1 joined........\\n");
: t2.join();
:
: printf(" finished........\\n");
:
: return 0;
: }
:
: g++ a.cpp -O2 -std=c++11 -pthread && ./a.out
:
: 程序挂住了
:
: 不开-O2不会挂住,加上volatile不会挂住,加上fence也不会挂住
:
: --
:
发自「今日水木 on Android」
--
FROM 223.104.212.*