SphinxBase
0.6
|
Simple portable thread functions. More...
Go to the source code of this file.
Typedefs | |
typedef struct sbthread_s | sbthread_t |
Thread object. | |
typedef struct sbmsgq_s | sbmsgq_t |
Asynchronous message queue object. | |
typedef struct sbmtx_s | sbmtx_t |
Mutex (critical section) object. | |
typedef struct sbevent_s | sbevent_t |
Event object. | |
typedef int(* | sbthread_main )(sbthread_t *th) |
Entry point for a thread. | |
Functions | |
SPHINXBASE_EXPORT sbthread_t * | sbthread_start (cmd_ln_t *config, sbthread_main func, void *arg) |
Start a new thread. | |
SPHINXBASE_EXPORT int | sbthread_wait (sbthread_t *th) |
Wait for a thread to complete. | |
SPHINXBASE_EXPORT void | sbthread_free (sbthread_t *th) |
Free a thread object. | |
SPHINXBASE_EXPORT cmd_ln_t * | sbthread_config (sbthread_t *th) |
Get configuration object from a thread. | |
SPHINXBASE_EXPORT void * | sbthread_arg (sbthread_t *th) |
Get argument pointer from a thread. | |
SPHINXBASE_EXPORT sbmsgq_t * | sbthread_msgq (sbthread_t *th) |
Get message queue from a thread. | |
SPHINXBASE_EXPORT int | sbthread_send (sbthread_t *th, size_t len, void const *data) |
Send an asynchronous message to a thread. More... | |
SPHINXBASE_EXPORT sbmsgq_t * | sbmsgq_init (size_t depth) |
Create a message queue. More... | |
SPHINXBASE_EXPORT void | sbmsgq_free (sbmsgq_t *q) |
Free a message queue. | |
SPHINXBASE_EXPORT int | sbmsgq_send (sbmsgq_t *q, size_t len, void const *data) |
Post a message to a queue. | |
SPHINXBASE_EXPORT void * | sbmsgq_wait (sbmsgq_t *q, size_t *out_len, int sec, int nsec) |
Wait for a message from a queue. | |
SPHINXBASE_EXPORT sbmtx_t * | sbmtx_init (void) |
Create a mutex. | |
SPHINXBASE_EXPORT int | sbmtx_trylock (sbmtx_t *mtx) |
Try to acquire a mutex. | |
SPHINXBASE_EXPORT int | sbmtx_lock (sbmtx_t *mtx) |
Acquire a mutex. | |
SPHINXBASE_EXPORT int | sbmtx_unlock (sbmtx_t *mtx) |
Release a mutex. | |
SPHINXBASE_EXPORT void | sbmtx_free (sbmtx_t *mtx) |
Dispose of a mutex. | |
SPHINXBASE_EXPORT sbevent_t * | sbevent_init (void) |
Initialize an event. | |
SPHINXBASE_EXPORT void | sbevent_free (sbevent_t *evt) |
Free an event. | |
SPHINXBASE_EXPORT int | sbevent_signal (sbevent_t *evt) |
Signal an event. | |
SPHINXBASE_EXPORT int | sbevent_wait (sbevent_t *evt, int sec, int nsec) |
Wait for an event to be signalled. | |
Simple portable thread functions.
Definition in file sbthread.h.
SPHINXBASE_EXPORT sbmsgq_t* sbmsgq_init | ( | size_t | depth | ) |
Create a message queue.
depth | Depth of the queue. |
Definition at line 444 of file sbthread.c.
References ckd_calloc, and ckd_free().
Referenced by sbthread_start().
SPHINXBASE_EXPORT int sbthread_send | ( | sbthread_t * | th, |
size_t | len, | ||
void const * | data | ||
) |
Send an asynchronous message to a thread.
Each thread gets a message queue by default, so this is just a wrapper around sbmsgq_send().
Definition at line 728 of file sbthread.c.
References sbmsgq_send().