1#pragma once
2
3#include <stdatomic.h>
4#include <threads.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef struct {
11 cnd_t cond;
12 mtx_t mtx;
13 atomic_bool flag;
14} Event;
15
16Event* create_event();
17void delete_event(Event** event_ptr);
18void set_event(Event* event);
19void clear_event(Event* event);
20bool event_is_set(Event* event);
21bool wait_event(Event* event, double timeout);
22
23#ifdef __cplusplus
24}
25#endif