OpenMP API 用户指南:https://docs.oracle.com/cd/E57201_01/html/E58572/docinfo.html#scrolltoc
一、OpenMP任务处理模型
1、OpenMP 任务执行
显式任务使用 task 构造指定,该构造可放置在程序中的任一位置。只要线程遇到 task 构造,就会生成一个新任务
允许线程在任务调度点暂停执行任务区域,以便执行另一任务
与任务关联的代码仅执行一次。如果代码从始至终都必须由相同的线程执行,则任务为绑定 (tied) 任务。如果代码可由多个线程执行,即由不同的线程执行任务代码的不同部分,则任务为非绑定 (untied) 任务
OpenMP 规范还介绍了隐式任务的概念。隐式任务是由隐式并行区域生成的任务,或是在执行期间遇到 parallel 构造时生成的任务。在后一种情况中,每个隐式任务的代码都是 parallel 构造内的代码。每个隐式任务分配给组中不同的线程,且为绑定 (tied) 任务。
2、 OpenMP 任务类型
1)不延迟 (undeferred) 任务是指相对于生成任务,不会延迟执行的任务
2)与不延迟 (undeferred) 任务不同,