SphinxBase  5prealpha
sbthread.h File Reference

Simple portable thread functions. More...

#include <sphinx_config.h>
#include <sphinxbase/sphinxbase_export.h>
#include <sphinxbase/cmd_ln.h>

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_tsbthread_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_tsbthread_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_tsbthread_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_tsbmsgq_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_tsbmtx_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_tsbevent_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.
 

Detailed Description

Simple portable thread functions.

Author
David Huggins-Daines dhugg.nosp@m.ins@.nosp@m.cs.cm.nosp@m.u.ed.nosp@m.u

Definition in file sbthread.h.

Function Documentation

SPHINXBASE_EXPORT sbmsgq_t* sbmsgq_init ( size_t  depth)

Create a message queue.

Parameters
depthDepth 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().