當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

一個初級的線程函數(shù)
2022-08-29 23:58:48

一個初級的線程函數(shù)

創(chuàng)建10個線程,每個線程內(nèi)進(jìn)行計(jì)數(shù)操作,有鎖.?

對認(rèn)識線程,有一定的幫助作用。

#include <iostream>  // std::cout
#include <thread>    // std::thread
#include <mutex>     // std::mutex
using namespace std;
volatile int counter(0);  //定義一個全局變量,當(dāng)作計(jì)數(shù)器,用于累加
std::mutex mtx; //用于包含 counter 的互斥鎖
void thrfunc()
{
    for(int i=0;i<50;++i)
    {
        // 互斥鎖上鎖
        if(mtx.try_lock())
        {
            ++counter;  // 計(jì)數(shù)器累加
            cout<<counter<<endl;
            mtx.unlock(); // 互斥鎖解鎖 
        }
        else
        {
            cout <<"try_lock false"<<endl;
        }
    }
}

int main(int argc, const char* argv[])
{
    std::thread threads[10];
    for(int i=0;i<10;++i)
    {
        threads[i] = std::thread(thrfunc); // 啟動10個線程
    }
    for(auto & th:threads)
    {
        th.join();//等待10個線程結(jié)束
    }
    cout <<"count to "<<counter<<" successfully "<<endl;
    return 0;
}
//g++ demo1.cpp -o demo1 -l pthread

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >