Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

3.4 并行执行模型

并行循环的执行由线程完成。启动程序的初始执行的线程称为主线程。主线程遇到并行循环时,就会创建由其自身及多个从属线程组成的线程组。循环迭代会分成块,而块会分布在线程组中的线程之间。在一个线程完成其块的执行时,将与该线程组的剩余线程保持同步。这种同步称为屏障。直到所有从属线程都已完成它在并行循环中的工作并到达屏障,主线程才能继续执行程序的剩余部分。在屏障结束时,主线程会继续以串行方式执行程序,直到遇到其他并行循环。

在此期间,会发生多种开销,例如与以下各项相关的开销:

  • 线程创建

  • 工作分配

  • 屏障同步

对于某些并行循环,执行的有用工作量不足以证明开销。对于此类循环,其运行速度会因并行化明显减慢。但是,如果循环中的有用工作量足够大,则循环的并行执行将会使程序加速。