#include <signal.h>
#include <pthread.h>
+#include <mutex>
+
struct timespec;
// A thread class with start/stop and signal functionality.
// the file descriptor.
//
// If fd is -1, wait until a wakeup or timeout.
- // if timeout_ts is NULL, there is no timeout.
+ // if timeout_ts is nullptr, there is no timeout.
bool wait_for_activity(int fd, short events, const timespec *timeout_ts);
// Wait until a wakeup.
void wait_for_wakeup(const timespec *timeout_ts) { wait_for_activity(-1, 0, timeout_ts); }
- // Make wait_for_activity() return.
+ // Make wait_for_activity() return. Note that this is a relatively expensive
+ // operation.
void wakeup();
bool should_stop();
pthread_t worker_thread;
// Protects should_stop_status.
- pthread_mutex_t should_stop_mutex;
+ std::mutex should_stop_mutex;
// If this is set, the thread should return as soon as possible from do_work().
bool should_stop_status;