10.2. 障碍
与其他线程同步方法相比,障碍的运行方式截然不同。障碍在代码中定义一个点,其中所有活动线程都停止,直到所有线程和进程都到达这个障碍。当运行的应用程序需要确保所有线程都已完成特定任务时,可以在继续操作前,使用障碍。
barrier mutex 实时使用以下两个变量:
-
第一个变量记录了
障碍的停止和
传递
状态。 - 第二个变量记录了进入障碍的线程总数。
只有指定数量的线程数量达到定义的 barrier 时,barrier 才会将状态设置为 pass
。当 barrier 状态设置为 pass
时,线程和进程将继续。pthread_barrier_init ()
函数分配所需的资源,以使用定义的 barrier,并使用 attr
属性对象引用的属性进行初始化。
当成功时,pthread_barrier_init ()
和 pthread_barrier_destroy ()
函数返回零值。出错时,它们会返回错误号。