mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-20 21:43:12 -07:00
Add ChiakiCond
This commit is contained in:
parent
f3e8164705
commit
ad6295d706
2 changed files with 59 additions and 1 deletions
|
@ -48,6 +48,19 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_lock(ChiakiMutex *mutex);
|
||||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_trylock(ChiakiMutex *mutex);
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_trylock(ChiakiMutex *mutex);
|
||||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_unlock(ChiakiMutex *mutex);
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_unlock(ChiakiMutex *mutex);
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct chiaki_cond_t
|
||||||
|
{
|
||||||
|
pthread_cond_t cond;
|
||||||
|
} ChiakiCond;
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_init(ChiakiCond *cond);
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_fini(ChiakiCond *cond);
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait(ChiakiCond *cond, ChiakiMutex *mutex);
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_signal(ChiakiCond *cond);
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_broadcast(ChiakiCond *cond);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -80,3 +80,48 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_unlock(ChiakiMutex *mutex)
|
||||||
return CHIAKI_ERR_UNKNOWN;
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
return CHIAKI_ERR_SUCCESS;
|
return CHIAKI_ERR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_init(ChiakiCond *cond)
|
||||||
|
{
|
||||||
|
int r = pthread_cond_init(&cond->cond, NULL);
|
||||||
|
if(r != 0)
|
||||||
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
|
return CHIAKI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_fini(ChiakiCond *cond)
|
||||||
|
{
|
||||||
|
int r = pthread_cond_destroy(&cond->cond);
|
||||||
|
if(r != 0)
|
||||||
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
|
return CHIAKI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait(ChiakiCond *cond, ChiakiMutex *mutex)
|
||||||
|
{
|
||||||
|
int r = pthread_cond_wait(&cond->cond, &mutex->mutex);
|
||||||
|
if(r != 0)
|
||||||
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
|
return CHIAKI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_signal(ChiakiCond *cond)
|
||||||
|
{
|
||||||
|
int r = pthread_cond_signal(&cond->cond);
|
||||||
|
if(r != 0)
|
||||||
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
|
return CHIAKI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_broadcast(ChiakiCond *cond)
|
||||||
|
{
|
||||||
|
int r = pthread_cond_broadcast(&cond->cond);
|
||||||
|
if(r != 0)
|
||||||
|
return CHIAKI_ERR_UNKNOWN;
|
||||||
|
return CHIAKI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue