Add thread support
This commit is contained in:
45
include/bh/internal/thread.h
Normal file
45
include/bh/internal/thread.h
Normal file
@@ -0,0 +1,45 @@
|
||||
#ifndef BHLIB_INTERNAL_THREAD_H
|
||||
#define BHLIB_INTERNAL_THREAD_H
|
||||
|
||||
#include <bh/thread.h>
|
||||
#include "queue.h"
|
||||
|
||||
#define BH_THREAD_DONE (1 << 8)
|
||||
|
||||
#if defined(BHLIB_USE_PTHREAD)
|
||||
#include "thread_posix.h"
|
||||
#elif defined(BHLIB_USE_WINTHREAD)
|
||||
#include "thread_win.h"
|
||||
#else
|
||||
#include "thread_null.h"
|
||||
#endif
|
||||
|
||||
struct bh_task_s
|
||||
{
|
||||
void (*func)(void *);
|
||||
void *data;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct bh_thread_pool_s
|
||||
{
|
||||
bh_thread_t *threads;
|
||||
bh_queue_t tasks;
|
||||
bh_mutex_t lock;
|
||||
bh_cond_t new_task;
|
||||
bh_cond_t done_task;
|
||||
size_t size;
|
||||
size_t active;
|
||||
int shutdown;
|
||||
};
|
||||
|
||||
void bh_task_init(bh_task_t *task,
|
||||
void (*func)(void *),
|
||||
void *data,
|
||||
int flags);
|
||||
|
||||
void bh_task_destroy(bh_task_t *task);
|
||||
|
||||
void bh_thread_pool_worker(void *arg);
|
||||
|
||||
#endif /* BHLIB_INTERNAL_THREAD_H */
|
||||
Reference in New Issue
Block a user