c++多线程事项(有待更新)

本文介绍了OpenMP的并行编程模式,包括fork-join执行模型及四种常见并行指令形式:paralell for、parallel sections、critical和reduction。此外,还提供了获取处理器个数的方法。
摘要由CSDN通过智能技术生成

OpenMP采用fork-join的执行模式。开始的时候只存在一个主线程,当需要进行并行计算的时候,派生出若干个分支线程来执行并行任务。当并行代码执行完成之后,分支线程会合,并把控制流程交给单独的主线程。

形式1


#pragma omp parallel for
{
	function();
}

//parallel和for指令的结合,也是用在for循环语句之前,
//表示for循环体的代码将被多个线程并行执行,
//它同时具有并行域的产生和任务分担两个功能;

形式2

#pragma omp parallel sections
{
    #pragma omp section
    {
        function1();
    }
  #pragma omp section
    {
        function2();
    }
}

//用在可被并行执行的代码段之前,用于实现多个结构块语句的任务分担,
//可并行执行的代码段各自用section指令标出

形式3

#pragma omp parallel for
{
	#pragma omp critical
	{
		function();
	}
}

//CRITICAL指令指定一块同一时间只能被一条线程执行的代码区域,
//如果一条线程正在一个CRITICAL区域执行而另一个线程到达这个区域,
//并企图执行,那么它将会被阻塞,直到第一个线程离开这个区域.

形式4

#pragma omp parallel for reduction
{
	function();
}

形式4

omp_get_num_procs()函数来获取处理器个数



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉闫小亘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值