美文网首页
0.Multi-Thread Demo

0.Multi-Thread Demo

作者: HikeForWELL | 来源:发表于2015-06-22 15:06 被阅读27次
    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);它定义了一个互斥元以及锁护卫。如果不将这个区域锁住那么是存在多线程同时进入该区域的情况的,如下图就出现了输出语句混乱的情况。

    妙手空空

    而加锁后,输出规范了。


    井然有序

    相关文章

      网友评论

          本文标题:0.Multi-Thread Demo

          本文链接:https://www.haomeiwen.com/subject/gznsqttx.html