线程的调度优化
1. 引言
通过前边的介绍,知道了并行区域,默认情况下会自动生成与CPU个数相等的线程,然后并行执行并行区域中的代码。对于并行区域中的for循环有特殊的声明方式,这样不同的线程可以分别运行for循环变量的不同部分。通过锁同步(atomic、critical、mutex函数)或事件同步(nowait、single、section、master)来实现并行区域的同步控制。
那么系统是如何对线程进行调度的呢?具体的调度策略均有底层完成,本节介绍几种for可以在上层对for循环进行控制的调度策略。
2. 调度策略
调度策略 功能 适用场合
static 循环变量区域分为n等份,每个线程平分n份任务 各个cpu的性能差别不大
dynamic 循环变量区域分为n等份,某个线程执行完1份之后执行其他需要执行的 cpu之间运行能力差异很大
那一份任务
guided 循环变量区域由大到小分为不等的n份,运行方法类似dynamic 由于任务比dynamic不同,