#使用方法
$cd barrier
$make
$./_main
#补充 ##释放资源
用pthread_barrier_destroy(pthread_barrier_t *barrier);
如果在初始化barrier的时候,分配了其它资源,需要使来上面这个函数释放掉这些资源。这个函数执行之后,barrier变成了未初始化的状态,对未初始化状态的barrier锁执行操作的结果是未定义的。如果需要再次使用它的话,可以再次执行初始化函数来初始化。
barrier初始化之后无法改变其等待的计数值,除非先destroy后再重新init。
#总结 barrier用来控制一系列线程的运行,让他们各自在某固定的地方等待,直到所有线程都执行到这里后再一起继续运行。通常是等待所有线程都执行完某些操作后再继续运行。
barrier的意思是屏障,界限。可以理解为多个线程在多个平行的跑道上运行,在远处有一面墙挡住了他们,只有当他们都运行到墙这里,合力才能把墙推倒并继续运行。
可以把pthread_join理解为一种特殊的barrier。