4 mutex.c - Imager's mutex API.
18 CRITICAL_SECTION section;
23 =category Mutex functions
24 =synopsis i_mutex_t m = i_mutex_new();
29 If a critical section cannot be created for whatever reason, Imager
39 m = mymalloc(sizeof(*m));
40 InitializeCriticalSection(&(m->section));
46 =item i_mutex_destroy(m)
47 =category Mutex functions
48 =synopsis i_mutex_destroy(m);
56 i_mutex_destroy(i_mutex_t m) {
57 DeleteCriticalSection(&(m->section));
63 =category Mutex functions
64 =synopsis i_mutex_lock(m);
66 Lock the mutex, waiting if another thread has the mutex locked.
72 i_mutex_lock(i_mutex_t m) {
73 EnterCriticalSection(&(m->section));
77 =item i_mutex_unlock(m)
78 =category Mutex functions
79 =synopsis i_mutex_unlock(m);
83 The behavior of releasing a mutex you don't hold is unspecified.
89 i_mutex_unlock(i_mutex_t m) {
90 LeaveCriticalSection(&(m->section));