Boost Asio总结(13) 信号

1.1

eg.

typedef basic_signal_set signal_set;

void handler(
    const boost::system::error_code& error,
    int signal_number)
{
    
    
  if (!error)
  {
    
    
    // A signal occurred.
  }
}

...

// Construct a signal set registered for process termination.
boost::asio::signal_set signals(my_context, SIGINT, SIGTERM);

// Start an asynchronous wait for one of the signals to occur.
signals.async_wait(handler);

1.2

template <typename Executor = executor>
class basic_signal_set
{
    
    
  void add(int signal_number)
  {
    
    
    boost::system::error_code ec;
    impl_.get_service().add(impl_.get_implementation(), signal_number, ec);
    boost::asio::detail::throw_error(ec, "add");
  }

  void remove(int signal_number)
  {
    
    
    boost::system::error_code ec;
    impl_.get_service().remove(impl_.get_implementation(), signal_number, ec);
    boost::asio::detail::throw_error(ec, "remove");
  }

  void clear()
  {
    
    
    boost::system::error_code ec;
    impl_.get_service().clear(impl_.get_implementation(), ec);
    boost::asio::detail::throw_error(ec, "clear");
  }

  void cancel()
  {
    
    
    boost::system::error_code ec;
    impl_.get_service().cancel(impl_.get_implementation(), ec);
    boost::asio::detail::throw_error(ec, "cancel");
  }

  template <typename SignalHandler>
  BOOST_ASIO_INITFN_RESULT_TYPE(SignalHandler,
      void (boost::system::error_code, int))
  async_wait(BOOST_ASIO_MOVE_ARG(SignalHandler) handler)
  {
    
    
    return async_initiate<SignalHandler, void (boost::system::error_code, int)>(
        initiate_async_wait(), handler, this);
  }

...
}

猜你喜欢

转载自blog.csdn.net/thefist11cc/article/details/123565458