3
私は、スレッドプログラムの流れを制御するために、Cでバリアを作成できることを知っています。バリアを初期化し、スレッドが使用するようにしてから、それを破棄することができます。しかし、同じ障壁が再利用できるかどうかはわかりません(ループしている場合など)。または、2番目の待機点に新しいバリアを使用する必要がありますか?例として、以下のコードは正しいですか(同じ障壁を再利用していますか?)CのPthreadバリアは再利用可能ですか?
#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'が返す関数の値は何ですか?そして他の機能は? –
バリアは「フローを制御」しませんが、同期ポイントです。プログラムフローは条件文などによって制御されます。 – Olaf