5
私は初期化されたpthread_barrier_tを持っていれば、いつそれを破壊するのが安全ですか?次の例は安全ですか?おならの障壁を破壊するのはいつ安全ですか?
pthread_barrier_t barrier;
...
int rc = pthread_barrier_wait(b);
if (rc != PTHREAD_BARRIER_SERIAL_THREAD && rc != 0){
perror("pthread_barrier_wait");
exit(1);
}
if (id == 0){
if(pthread_barrier_destroy(&(threads[t_root].info.tmp_barrier))){
perror("pthread_barrier_destroy");
exit(1);
}
}
あなたの答えの最終文は偽です。パーPOSIXは、それはUBである:「結果は未定義である任意のスレッドがバリアでブロックされているときpthread_barrier_destroy()が呼び出された場合、またはこの機能が初期化されていないバリアで呼び出された場合。」 (http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_barrier_destroy.html) –