首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

0.Multi-Thread Demo

来源:要发发知识网
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);它定义了一个互斥元以及锁护卫。如果不将这个区域锁住那么是存在多线程同时进入该区域的情况的,如下图就出现了输出语句混乱的情况。

妙手空空

而加锁后,输出规范了。


井然有序
显示全文