![]()  | 
  
    General Utility Library for C++17 25.7.0
    
   | 
 
A class that allows sending triggers and waiting for them across different threads.
A Trigger object is similar to a digital electric trigger signal. Its state is either high (true) or low (false), and actions are triggered when it is at the high level - that is to say, an arbitrary number of threads can wait until the Trigger object becomes true. Internally, a Trigger is little more than a wrapper around a mutex, a condition variable, and a boolean.
There are two ways to use a Trigger:
To stay in the picture of a digital electric trigger line, high and low states can be assigned and tested like booleans. This allows for easy communication of state:
Sometimes assignment of boolean values does not fit well to a specific task. The member functions trigger() and reset() are identical to assigning true and false, respectively: 
The unconditional wait() stops execution until the Trigger becomes true or is destructed. If a timeout is required, wait_for() or wait_until() can be used instead.
#include <Trigger.h>
Public Member Functions | |
| Trigger (bool triggered=false) noexcept | |
| Constructor.  | |
| GUL_EXPORT | ~Trigger () noexcept | 
| Destructor: Send a final trigger signal so that all threads waiting on this object have a chance to stop.  | |
| Trigger (const Trigger &)=delete | |
| Not copyable and not movable.  | |
| Trigger (Trigger &&)=delete | |
| Trigger & | operator= (const Trigger &)=delete | 
| Trigger & | operator= (Trigger &&)=delete | 
| GUL_EXPORT | operator bool () const noexcept | 
| Return if the trigger is high==true or low==false.   | |
| GUL_EXPORT Trigger & | operator= (bool interrupt) noexcept | 
| Set the trigger to high==true or low==false.   | |
| GUL_EXPORT void | reset () noexcept | 
| Set the trigger to low (false).  | |
| GUL_EXPORT void | trigger () noexcept | 
| Set the trigger to high (true).   | |
| GUL_EXPORT void | wait () const | 
| Suspend execution of the current thread until the trigger goes high (true).   | |
| template<class Rep , class Period > | |
| bool | wait_for (const std::chrono::duration< Rep, Period > &delta_t) const | 
| Suspend execution of the current thread until the trigger goes high (true) or at least the given time span has passed.   | |
| template<class Clock , class Duration > | |
| bool | wait_until (const std::chrono::time_point< Clock, Duration > &t) const | 
| Suspend execution of the current thread until the trigger goes high (true) or the given time point has been passed.   | |
      
  | 
  noexcept | 
Set the trigger to high==true or low==false.
Setting it to true will cause any waiting threads to resume.
References gul17::bit_set().
      
  | 
  noexcept | 
Set the trigger to high (true).
This causes any waiting threads to resume.
References gul17::bit_set().
Referenced by ~Trigger().
| void gul17::Trigger::wait | ( | ) | const | 
Suspend execution of the current thread until the trigger goes high (true).
Execution is also resumed if the object is destructed.
References gul17::bit_set().
Suspend execution of the current thread until the trigger goes high (true) or at least the given time span has passed.
Execution is also resumed if the object is destructed.
| Clock | The type of the underlying clock, e.g. std::chrono::system_clock. | 
| Duration | The duration type to be used, typically Clock::duration. | 
| delta_t | A time span to wait. If the trigger still has not become true after (at least) this time, the function returns false. | 
References gul17::bit_set().
      
  | 
  inline | 
Suspend execution of the current thread until the trigger goes high (true) or the given time point has been passed.
Execution is also resumed if the object is destructed.
| Clock | The type of the underlying clock, e.g. std::chrono::system_clock. | 
| Duration | The duration type to be used, typically Clock::duration. | 
| t | A time point after which the function should stop waiting. | 
References gul17::bit_set().