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