1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-09-16 09:44:19 +00:00
QB64-PE/internal/c/libqb/src/threading.cpp
2022-06-14 23:58:04 -04:00

31 lines
697 B
C++

#include "libqb-common.h"
#include "mutex.h"
#include "condvar.h"
#include "completion.h"
void completion_init(struct completion *comp) {
comp->finished = 0;
comp->mutex = libqb_mutex_new();
comp->var = libqb_condvar_new();
}
void completion_clear(struct completion *comp) {
libqb_mutex_free(comp->mutex);
libqb_condvar_free(comp->var);
}
void completion_wait(struct completion *comp) {
libqb_mutex_guard guard(comp->mutex);
while (!comp->finished)
libqb_condvar_wait(comp->var, comp->mutex);
}
void completion_finish(struct completion *comp) {
libqb_mutex_guard guard(comp->mutex);
comp->finished = 1;
libqb_condvar_broadcast(comp->var);
}