This patch requires the patch for atomic<T>::wait/notify to be applied first.
This implementation is based on the libc++ implementation, but excludes the alternative “central barrier” implementation for now as there is no standard way to switch between the two. * include/Makefile.am (std_headers): Add new header. * include/Makefile.in: Regenerate. * include/std/barrier: New file. * testsuite/30_thread/barrier/1.cc: New test. * testsuite/30_thread/barrier/2.cc: Likewise. * testsuite/30_thread/barrier/arrive_and_drop.cc: Likewise. * testsuite/30_thread/barrier/arrive_and_wait.cc: Likewise. * testsuite/30_thread/barrier/arrive.cc: Likewise. * testsuite/30_thread/barrier/completion.cc: Likewise. * testsuite/30_thread/barrier/max.cc: Likewise.