diff options
Diffstat (limited to 'include/bh/internal/thread_win.h')
| -rw-r--r-- | include/bh/internal/thread_win.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/bh/internal/thread_win.h b/include/bh/internal/thread_win.h new file mode 100644 index 0000000..a84cbdb --- /dev/null +++ b/include/bh/internal/thread_win.h @@ -0,0 +1,48 @@ +#include <process.h> + +struct bh_thread_s +{ + HANDLE handle; + int allocated; +}; + +struct bh_thread_data_s +{ + bh_task_t *task; + bh_thread_end_cb_t end; +} bh_thread_data_t; + +struct bh_mutex_s +{ + CRITICAL_SECTION handle; +}; + +struct bh_cond_s +{ + void *handle; +}; + +int bh_thread_init_base(bh_thread_t *thread, + bh_task_t *task, + bh_thread_begin_cb_t begin, + bh_thread_end_cb_t end); + +#define bh_thread_init(thread, task) \ + bh_thread_init_base((thread), (task), _beginthreadex, _endthreadex) + +int bh_mutex_init(bh_mutex_t *mutex); +void bh_mutex_destroy(bh_mutex_t *mutex); + +int bh_cond_init(bh_cond_t *cond); +void bh_cond_destroy(bh_cond_t *cond); + +int bh_thread_pool_init_base(bh_thread_pool_t *pool, + size_t size, + bh_thread_begin_cb_t begin, + bh_thread_end_cb_t end); + +#define bh_thread_pool_init(pool, size) \ + bh_thread_pool_init_base((pool), (size), _beginthreadex, _endthreadex) + +void bh_thread_pool_destroy(bh_thread_pool_t *pool); + |
