C/C++多线程并行编程

需要引入thread库

创建线程:

thread thr = thread(fun_name, argvs());//参数列表

当线程被创建以后,就会自动开始执行线程函数fun_name,函数的参数中如果有引用,需要用ref()函数,不能用&符号

创建线程数组:

thread* th = new thread[thr_num]; //新建一个线程数组
for(int i=0;i<thr_num;i++){
	//对每个线程进行初始化
	th[i] = thread(函数名称, 参数列表);
}
//线程完成时,需要等待线程结束,可使用join或者detach
 for (int i = 0; i < actThr_num; i++)
        th[i].join();//等待子线程结束

当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用来知道一个线程已结束的机制。当thread::join()返回时,OS的执行的线程已经完成,C++线程对象可以被销毁。

当thread::detach()函数被调用后,执行的线程从线程对象中被分离,已不再被一个线程对象所表达–这是两个独立的事情。C++线程对象可以被销毁,同时OS执行的线程可以继续。如果程序想要知道执行的线程何时结束,就需要一些其它的机制。join()函数在那个thread对象上不能再被调用,因为它已经不再和一个执行的线程相关联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值