你能并行做的事有什么?
拉屎和读书啊!
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);
它定义了一个互斥元以及锁护卫。如果不将这个区域锁住那么是存在多线程同时进入该区域的情况的,如下图就出现了输出语句混乱的情况。
而加锁后,输出规范了。
井然有序
网友评论