【发布时间】:2016-07-19 00:40:39
【问题描述】:
所以我知道您可以在 C 中创建屏障来控制线程程序的流程。你可以初始化屏障,让你的线程使用它,然后销毁它。但是,我不确定是否可以重复使用相同的屏障(比如它是否在循环中)。或者您必须为第二个等待点使用新的屏障?例如,下面的代码是否正确(重复使用相同的屏障)?
#include <pthread.h>
pthread_barrier_t barrier;
void* thread_func (void *not_used) {
//some code
pthread_barrier_wait(&barrier);
//some more code
pthread_barrier_wait(&barrier);
//even more code
}
int main() {
pthread_barrier_init (&barrier, NULL, 2);
pthread_t tid[2];
pthread_create (&tid[0], NULL, thread_func, NULL);
pthread_create (&tid[1], NULL, thread_func, NULL);
pthread_join(tid[0], NULL);
pthread_join(tid[1], NULL);
pthread_barrier_destroy(&barrier);
}
【问题讨论】:
-
pthread_barrier_init返回的函数值是多少?还有其他功能吗? -
屏障不是“控制流”,而是一个同步点。程序流程由条件语句等控制。