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