一个初级的线程函数

一个初级的线程函数

创建10个线程,每个线程内进行计数操作,有锁. 

对认识线程,有一定的帮助作用。

复制代码
#include <iostream>  // std::cout
#include <thread>    // std::thread
#include <mutex>     // std::mutex
using namespace std;
volatile int counter(0);  //定义一个全局变量,当作计数器,用于累加
std::mutex mtx; //用于包含 counter 的互斥锁
void thrfunc()
{
    for(int i=0;i<50;++i)
    {
        // 互斥锁上锁
        if(mtx.try_lock())
        {
            ++counter;  // 计数器累加
            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个线程结束
    }
    cout <<"count to "<<counter<<" successfully "<<endl;
    return 0;
}
//g++ demo1.cpp -o demo1 -l pthread
复制代码

 

posted @   He_LiangLiang  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-08-29 centos中开启daytime服务
点击右上角即可分享
微信分享提示