Multi-Thread
你能并行做的事有什么欠啤?
拉屎和讀書凹栽濉!
C++11最重要的一個特性就是加入了對多線程的支持洁段。
一個小小的Demo应狱。
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
mutex printMutex;
void printHello()
{
for (int i_cnt = 0; i_cnt < 100; ++i_cnt)
{
// 如果不鎖住,可能存在多個進程同時輸出的情況
std::lock_guard<mutex> mutexGuard(printMutex);
cout << "Thred id:" << this_thread::get_id() << " Count:" << i_cnt << endl;
}
}
int main(int argc, _TCHAR* argv[])
{
thread trdPrint(printHello);
thread trdDetach(printHello);
trdPrint.join();
trdDetach.detach();
getchar();
return 0;
}
要注意這一句代碼std::lock_guard<mutex> mutexGuard(printMutex);
它定義了一個互斥元以及鎖護衛(wèi)祠丝。如果不將這個區(qū)域鎖住那么是存在多線程同時進入該區(qū)域的情況的疾呻,如下圖就出現(xiàn)了輸出語句混亂的情況。
妙手空空
而加鎖后写半,輸出規(guī)范了岸蜗。
井然有序