text: /**
   * @file Semaphore.h
   * @date 2021-5-6
   * @author kaoru
   * @brief 信号量头文件
   */
  
  #ifndef ZFRAMEWORK_SEMAPHORE_H
  #define ZFRAMEWORK_SEMAPHORE_H
  
  #include <pthread.h>
  #include <semaphore.h>
  #include <cstdint>
  #include <system_error>
  #include "Noncopyable.h"
  
  namespace ZFramework {
  
      /**
       * @brief 信号量
       */
      class Semaphore : public Noncopyable{
      public:
          /**
           * 默认构造函数
           * @param count 计数器， 默认为 0
           */
          explicit Semaphore(uint32_t count = 0);
  
          /**
           * 默认析构函数
           */
          ~Semaphore();
  
          /**
           * 等待
           */
          void wait();
  
          /**
           * 唤醒
           */
          void notify();
  
      private:
          sem_t semaphore;
      };
  
  }// ZFramework
  
  #endif //ZFRAMEWORK_SEMAPHORE_H
  