mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-08-31 00:40:16 +00:00
This adds generic APIs to libqb for handling thread's, mutex's, and condition variables. On Linux and OSX these are implemented via the ones provided by pthreads. On Windows they're implemented via the ones provided by the Win32 API. For compiling, the code itself is not conditional, but the Makefile includes logic to decide which implementation to pick. Note that it would have been nice to simply use std::thread and friends from C++11, however using them on MinGW appears to be a bit messy. Since using the Windows ones directly isn't that hard this was an easy compromise.
23 lines
694 B
C
23 lines
694 B
C
#ifndef INCLUDE_LIBQB_CONDVAR_H
|
|
#define INCLUDE_LIBQB_CONDVAR_H
|
|
|
|
#include "mutex.h"
|
|
|
|
// Condition Variable
|
|
struct libqb_condvar;
|
|
|
|
// Allocates and frees a Condition Variable
|
|
struct libqb_condvar *libqb_condvar_new();
|
|
void libqb_condvar_free(struct libqb_condvar *);
|
|
|
|
// Waits until the Condition Variable is signalled, atomically dropping the
|
|
// Mutex while checking the Condition Variable
|
|
void libqb_condvar_wait(struct libqb_condvar *, struct libqb_mutex *);
|
|
|
|
// Singals a single thread waiting on the Condition Variable
|
|
void libqb_condvar_signal(struct libqb_condvar *);
|
|
|
|
// Signals all threads waiting on the Condtiion Variable
|
|
void libqb_condvar_broadcast(struct libqb_condvar *);
|
|
|
|
#endif
|