#include <unistd.h>
#include "log.h"
-#include "mutexlock.h"
#include "thread.h"
+using namespace std;
+
Thread::~Thread() {}
void Thread::run()
{
- pthread_mutex_init(&should_stop_mutex, NULL);
should_stop_status = false;
- pthread_create(&worker_thread, NULL, &Thread::do_work_thunk, this);
+ pthread_create(&worker_thread, nullptr, &Thread::do_work_thunk, this);
}
void Thread::stop()
{
{
- MutexLock lock(&should_stop_mutex);
+ lock_guard<mutex> lock(should_stop_mutex);
should_stop_status = true;
}
wakeup();
- if (pthread_join(worker_thread, NULL) == -1) {
+ if (pthread_join(worker_thread, nullptr) == -1) {
log_perror("pthread_join");
exit(1);
}
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGHUP);
- int err = pthread_sigmask(SIG_BLOCK, &set, NULL);
+ int err = pthread_sigmask(SIG_BLOCK, &set, nullptr);
if (err != 0) {
errno = err;
log_perror("pthread_sigmask");
// Call the right thunk.
thread->do_work();
- return NULL;
+ return nullptr;
}
bool Thread::wait_for_activity(int fd, short events, const struct timespec *timeout_ts)
bool Thread::should_stop()
{
- MutexLock lock(&should_stop_mutex);
+ lock_guard<mutex> lock(should_stop_mutex);
return should_stop_status;
}