# Standard library header <barrier> (C++20)

From cppreference.com
< cpp‎ | header

This header is part of the thread support library.

### Classes
barrier (C++20) | reusable thread barrier (class template)

### Synopsis

    namespace std {
      template<class CompletionFunction = /* see description */>
        class barrier;
    }

#### Class template std::barrier

    namespace std {
      template<class CompletionFunction = /* see description */>
      class barrier {
      public:
        using arrival_token =  /* see description */;

        static constexpr ptrdiff_t max() noexcept;

        constexpr explicit barrier(ptrdiff_t expected,
                                   CompletionFunction f = CompletionFunction());
        ~barrier();

        barrier(const barrier&) = delete;
        barrier& operator=(const barrier&) = delete;

        [[nodiscard]] arrival_token arrive(ptrdiff_t update = 1);
        void wait(arrival_token&& arrival) const;

        void arrive_and_wait();
        void arrive_and_drop();

      private:
        CompletionFunction completion;      // exposition only
      };
    }

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/barrier&oldid=141002"