/** * Create a thread barrier for count threads */ static barrier_t* barrier_create(int count) { barrier_t *this; INIT(this, .mutex = mutex_create(MUTEX_TYPE_DEFAULT), .cond = condvar_create(CONDVAR_TYPE_DEFAULT), .count = count, ); return this; }
/** * Windows variant */ void wait_sigint() { SetConsoleCtrlHandler(handler, TRUE); sigint_mutex = mutex_create(MUTEX_TYPE_DEFAULT); sigint_cond = condvar_create(CONDVAR_TYPE_DEFAULT); sigint_mutex->lock(sigint_mutex); while (!sigint_signaled) { sigint_cond->wait(sigint_cond, sigint_mutex); } sigint_mutex->unlock(sigint_mutex); sigint_mutex->destroy(sigint_mutex); sigint_cond->destroy(sigint_cond); }