waitable_event.h.xml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <chapter xml:id="waitable_event.h">
  2. <title><tt>__vic/waitable_event.h</tt></title>
  3. <chapter xml:id="waitable_event">
  4. <title><tt>waitable_event</tt></title>
  5. <code-block lang="C++"><![CDATA[
  6. class waitable_event : private non_copyable
  7. {
  8. public:
  9. explicit waitable_event(bool signaled = false);
  10. ~waitable_event();
  11. void set();
  12. void reset();
  13. bool signaled() const;
  14. void wait();
  15. bool wait_ms(unsigned msec);
  16. // BEGIN C++11
  17. template<class Rep, class Period>
  18. bool wait_for(const std::chrono::duration<Rep,Period> &d);
  19. template<class Clock, class Duration>
  20. bool wait_until(const std::chrono::time_point<Clock,Duration> &t);
  21. // END C++11
  22. };
  23. ]]>
  24. </code-block>
  25. <p>Инструмент синхронизации, подобный «Event Object» в ОС Windows. Может
  26. находиться в одном из двух состояний: сигнальном или несигнальном. Поток
  27. может эффективно ждать перехода в сигнальное состояние, используя
  28. предоставляемые wait-функции (с минимальным потреблением ресурсов системы).</p>
  29. <section><title>Члены класса</title>
  30. <synopsis>
  31. <prototype>explicit waitable_event(bool signaled = false)</prototype>
  32. <postcondition><tt>signaled() == signaled</tt></postcondition>
  33. </synopsis>
  34. <synopsis>
  35. <prototype>bool signaled() const</prototype>
  36. <p>Возвращает <tt>true</tt>, если объект находится в сигнальном состоянии.</p>
  37. </synopsis>
  38. <synopsis>
  39. <prototype>void set()</prototype>
  40. <p>Устанавливает сигнальное состояние.</p>
  41. <postcondition><tt>signaled() == true</tt></postcondition>
  42. </synopsis>
  43. <synopsis>
  44. <prototype>void reset()</prototype>
  45. <p>Устанавливает несигнальное состояние.</p>
  46. <postcondition><tt>signaled() == false</tt></postcondition>
  47. </synopsis>
  48. <synopsis>
  49. <prototype>void wait()</prototype>
  50. <p>Ждёт сигнального состояния без таймаута.</p>
  51. <postcondition><tt>signaled() == true</tt></postcondition>
  52. </synopsis>
  53. <synopsis>
  54. <prototype>bool wait_ms(unsigned msec)</prototype>
  55. <p>Ждёт сигнального состояния не дольше указанного таймаута в миллисекундах.
  56. Returns <tt>signaled()</tt>.</p>
  57. <note>В режиме C++11 используйте <tt>wait_for()</tt>.</note>
  58. </synopsis>
  59. <synopsis>
  60. <prototype><![CDATA[template<class Rep, class Period>
  61. bool wait_for(const std::chrono::duration<Rep,Period> &d)]]> <sign>C++11</sign></prototype>
  62. <prototype><![CDATA[template<class Clock, class Duration>
  63. bool wait_until(const std::chrono::time_point<Clock,Duration> &t)]]> <sign>C++11</sign></prototype>
  64. <p>Ждёт сигнального состояния не дольше указанного таймаута. Возвращает
  65. <tt>signaled()</tt>.</p>
  66. </synopsis>
  67. </section>
  68. </chapter>
  69. </chapter>