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