c++多线程

c++多线程

多线程的成员函数以及属性
/*
 * c++多线程
 * 子线程一旦进行了构造,那便开始运行
 * 相关函数
 * join()将子线程和主线程进行阻塞,子线程运行完才会到下一步的主线程的运行
 * detach()子线程和主线程呈现的是并发的关系
 * native_handle()可以得到线程的句柄
 *
*/
#include<iostream>
#include<thread>
#include<unistd.h>
using namespace std;

void sayHello(int i,char str[])
{
    cout<<"hello thread\t"<<str<<i<<endl;
    cout<<"thread id:"<<this_thread::get_id()<<endl;//获取线程的id
    this_thread::yield();                           //空闲时候运行其他的线程
    this_thread::sleep_for(chrono::seconds(1));     //sleep 1s
}

int main()
{
    char *str="zylg";
    thread t1(sayHello,1,str);
    thread t2([]{cout<<"the world is perfeat\n";});
    cout<<"线程的id:"<<t1.get_id()<<"CPU的核心数:"<<t1.hardware_concurrency()<<endl;
    t1.join();
    t2.join();
    return 0;
}

多线程的同步控制
/*
 * c++多线程(线程的同步控制)
 *
*/
#include<iostream>
#include<thread>
#include<unistd.h>
#include<mutex>
using namespace std;

int total=100;
mutex mu;

void showInt()
{
    while(total>0)
    {
        mu.lock();
        cout<<total--<<endl;
        mu.unlock();
    }
}

int main()
{
    thread t1(showInt);
    thread t2(showInt);
    t1.join();
    t2.join();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值