0.Multi-Thread Demo

0.Multi-Thread Demo_第1张图片
Multi-Thread

你能并行做的事有什么?
拉屎和读书啊!

C++11最重要的一个特性就是加入了对多线程的支持。
一个小小的Demo。

#include 
#include 
#include 
using namespace std;
mutex printMutex;

void printHello()
{
    for (int i_cnt = 0; i_cnt < 100; ++i_cnt)
    {
        // 如果不锁住,可能存在多个进程同时输出的情况
        std::lock_guard 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 mutexGuard(printMutex);它定义了一个互斥元以及锁护卫。如果不将这个区域锁住那么是存在多线程同时进入该区域的情况的,如下图就出现了输出语句混乱的情况。

0.Multi-Thread Demo_第2张图片
妙手空空

而加锁后,输出规范了。


0.Multi-Thread Demo_第3张图片
井然有序

你可能感兴趣的:(0.Multi-Thread Demo)