Synchronization OpenMP中if子句的使用
无法确定以下代码中if(0)子句的用法,因为还存在#pragma omp single子句。有什么想法吗Synchronization OpenMP中if子句的使用,synchronization,task,openmp,Synchronization,Task,Openmp,无法确定以下代码中if(0)子句的用法,因为还存在#pragma omp single子句。有什么想法吗 首先,我想你应该知道其中的定义: 当任务构造上存在if子句,且if子句表达式的计算结果为false时,将生成未出错的任务,遇到的线程必须挂起当前任务区域,在生成的任务完成之前,无法继续执行该任务区域 其中未出错的任务定义为: 一种任务,其执行不会相对于其生成任务区域而延迟。也就是说,其生成任务区域将挂起,直到完成未出错任务的执行 根据一般任务描述: 遇到的线程可能会立即执行任务,或者延迟其执
首先,我想你应该知道其中的定义: 当任务构造上存在if子句,且if子句表达式的计算结果为false时,将生成未出错的任务,遇到的线程必须挂起当前任务区域,在生成的任务完成之前,无法继续执行该任务区域 其中未出错的任务定义为: 一种任务,其执行不会相对于其生成任务区域而延迟。也就是说,其生成任务区域将挂起,直到完成未出错任务的执行 根据一般任务描述: 遇到的线程可能会立即执行任务,或者延迟其执行。在后一种情况下,团队中的任何线程都可以被分配任务 总的来说,这让我得出结论,正如您所说的,如果(0),那么不使用
将产生相同的结果。但据我所知,未出错
意味着生成的任务被创建它的线程立即调用
在这个上下文中,通过将任务分配给以前空闲的线程,可以确保在“一”步中创建任务A()到C(),而不需要切换上下文,或者在两者之间切换