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); int ret = taosThreadMutexInit(&sem->mutex, NULL);
if (ret != 0) return ret; if (ret != 0) return ret;
ret = taosThreadCondAttrInit(&sem->attr); ret = taosThreadCondAttrInit(&sem->attr);
if (ret != 0) return ret; if (ret != 0)
{
taosThreadMutexDestroy(&sem->mutex);
return ret;
}
ret = taosThreadCondAttrSetclock(&sem->attr, CLOCK_MONOTONIC); 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); 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; sem->count = value;
return 0; return 0;
@ -238,12 +252,10 @@ int tsem_post(tsem_t *sem) {
} }
int tsem_destroy(tsem_t* sem) { int tsem_destroy(tsem_t* sem) {
int ret = taosThreadMutexDestroy(&sem->mutex); taosThreadMutexDestroy(&sem->mutex);
if (ret != 0) return ret; taosThreadCondDestroy(&sem->cond);
ret = taosThreadCondDestroy(&sem->cond); taosThreadCondAttrDestroy(&sem->attr);
return ret; return 0;
ret = taosThreadCondAttrDestroy(&sem->attr);
return ret;
} }
int32_t tsem_wait(tsem_t* sem) { int32_t tsem_wait(tsem_t* sem) {