sbthread.c File Reference

Simple portable thread functions. More...

`#include <string.h>`
`#include "sphinxbase/sbthread.h"`
`#include "sphinxbase/ckd_alloc.h"`
`#include "sphinxbase/err.h"`
`#include <pthread.h>`
`#include <sys/time.h>`

Go to the source code of this file.

## Data Structures

struct | sbthread_s
struct | sbmsgq_s
struct | sbevent_s
struct | sbmtx_s

## Functions

sbthread_t * | sbthread_start (cmd_ln_t *config, sbthread_main func, void *arg)
| Start a new thread.
int | sbthread_wait (sbthread_t *th)
| Wait for a thread to complete.
sbmsgq_t * | sbmsgq_init (size_t depth)
| Create a message queue. More...
void | sbmsgq_free (sbmsgq_t *msgq)
| Free a message queue.
int | sbmsgq_send (sbmsgq_t *q, size_t len, void const *data)
| Post a message to a queue.
void * | sbmsgq_wait (sbmsgq_t *q, size_t *out_len, int sec, int nsec)
| Wait for a message from a queue.
sbevent_t * | sbevent_init (void)
| Initialize an event.
void | sbevent_free (sbevent_t *evt)
| Free an event.
int | sbevent_signal (sbevent_t *evt)
| Signal an event.
int | sbevent_wait (sbevent_t *evt, int sec, int nsec)
| Wait for an event to be signalled.
sbmtx_t * | sbmtx_init (void)
| Create a mutex.
int | sbmtx_trylock (sbmtx_t *mtx)
| Try to acquire a mutex.
int | sbmtx_lock (sbmtx_t *mtx)
| Acquire a mutex.
int | sbmtx_unlock (sbmtx_t *mtx)
| Release a mutex.
void | sbmtx_free (sbmtx_t *mtx)
| Dispose of a mutex.
cmd_ln_t * | sbthread_config (sbthread_t *th)
| Get configuration object from a thread.
void * | sbthread_arg (sbthread_t *th)
| Get argument pointer from a thread.
sbmsgq_t * | sbthread_msgq (sbthread_t *th)
| Get message queue from a thread.
int | sbthread_send (sbthread_t *th, size_t len, void const *data)
| Send an asynchronous message to a thread. More...
void | sbthread_free (sbthread_t *th)
| Free a thread object.

## 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.c.

## Function Documentation

sbmsgq_t* sbmsgq_init | ( | size_t | depth | ) |

Create a message queue.

Parameters

  depth | Depth of the queue.

Definition at line 444 of file sbthread.c.

References ckd_calloc, and ckd_free().

Referenced by sbthread_start().

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