This commit is contained in:
factosea 2024-05-14 17:03:22 +08:00
parent 3c39f76365
commit 4db19b5215
1 changed files with 21 additions and 9 deletions

View File

@ -219,11 +219,25 @@ int tsem_init(tsem_t* sem, int pshared, unsigned int value) {
int ret = taosThreadMutexInit(&sem->mutex, NULL);
if (ret != 0) return ret;
ret = taosThreadCondAttrInit(&sem->attr);
if (ret != 0) return ret;
if (ret != 0)
{
taosThreadMutexDestroy(&sem->mutex);
return ret;
}
ret = taosThreadCondAttrSetclock(&sem->attr, CLOCK_MONOTONIC);
if (ret != 0) return ret;
if (ret != 0)
{
taosThreadMutexDestroy(&sem->mutex);
taosThreadCondAttrDestroy(&sem->attr);
return ret;
}
ret = taosThreadCondInit(&sem->cond, &sem->attr);
if (ret != 0) return ret;
if (ret != 0)
{
taosThreadMutexDestroy(&sem->mutex);
taosThreadCondAttrDestroy(&sem->attr);
return ret;
}
sem->count = value;
return 0;
@ -238,12 +252,10 @@ int tsem_post(tsem_t *sem) {
}
int tsem_destroy(tsem_t* sem) {
int ret = taosThreadMutexDestroy(&sem->mutex);
if (ret != 0) return ret;
ret = taosThreadCondDestroy(&sem->cond);
return ret;
ret = taosThreadCondAttrDestroy(&sem->attr);
return ret;
taosThreadMutexDestroy(&sem->mutex);
taosThreadCondDestroy(&sem->cond);
taosThreadCondAttrDestroy(&sem->attr);
return 0;
}
int32_t tsem_wait(tsem_t* sem) {