PREV UP NEXT StackThreads/MP: version 0.77 User's Guide

3.3.3: Mutex

        int st_mutex_init(m);
@        int st_mutex_trylock(m);
@        int st_mutex_lock(m);
@        int st_mutex_unlock(m);
@        int st_mutex_destroy(m);
@               st_mutex_t * m;
@        st_mutex_t x = ST_MUTEX_INITIALIZER;

Mutex is an essentially a binary semaphore with upper limit 1 (a semaphore that can only have 0 or 1 as its value). The mutex is either in locked or unlocked state. st_mutex_init(m) initializes it to an unlocked state. st_mutex_lock(m) waits for m to become unlocked and lock it. st_mutex_trylock(m) behaves like st_mutex_lock(m), except that it immediately returns value ST_BUSY when m is locked. st_mute_unlock(m) unlocks m. It signals an error if m is not locked. st_mutex_destroy(m) destroys m. It signals an error if m is locked. st_mutex_t x = ST_MUTEX_INITIALIZER defined a global or static mutex.