剛(一般和多線程)開始強制多線程的線程之間的比賽,並和寫的代碼短小文檔片斷。使用使用C++ 11線程庫C++ 11個線程
#include <iostream>
#include <thread>
int x = 5; //variable to be effected by race
//This function will be called from a thread
void call_from_thread1() {
for (int i = 0; i < 5; i++) {
x++;
std::cout << "In Thread 1 :" << x << std::endl;
}
}
int main() {
//Launch a thread
std::thread t1(call_from_thread1);
for (int j = 0; j < 5; j++) {
x--;
std::cout << "In Thread 0 :" << x << std::endl;
}
//Join the thread with the main thread
t1.join();
std::cout << x << std::endl;
return 0;
}
因爲兩個線程之間的競爭,每次(或幾乎每次)都會得到不同的結果。但是,輸出始終爲:0
,即兩個線程按順序運行。爲什麼我會得到相同的結果,並且有什麼方法來模擬或強制兩個線程之間的競賽?
這就是爲什麼比賽條件總是* *未定義行爲。 ;) –
你的CPU有多少核心? – DeathByTensors
4核,酷睿i3 – newprint