# 标准库头文件 <barrier>

< cpp‎ | header

此头文件是线程支持库的一部分。

### 类
barrier (C++20) | 可复用的线程屏障 (类模板)

### 概要

    namespace std {
      template<class CompletionFunction = /* 见描述 */>
        class barrier;
    }

#### 类模板 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;      // 仅用于阐释
      };
    }