バリアーが必要なくなったら、そのバリアーを削除するようにすべきです。barrier が参照するバリアーを削除し、そのバリアーによって使用されているリソースをすべて解放するには、pthread_barrier_destroy(3C) を使用します。
int pthread_barrier_destroy(pthread_barrier_t *barrier);
#include <pthread.h> pthread_barrier_t barrier; int ret; ret = pthread_barrier_destroy(&barrier);
pthread_barrier_destroy() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、対応する値を返します。
EINVAL
説明:barrier の値が無効です。
EBUSY
説明:バリアーが別のスレッドによって使用されている間 (たとえば、pthread_barrier_wait() で使用されている間) にそのバリアーの削除の試行が検出されました。