tsem_wait
This commit is contained in:
parent
889751e16f
commit
3c39f76365
|
@ -249,17 +249,12 @@ int tsem_destroy(tsem_t* sem) {
|
||||||
int32_t tsem_wait(tsem_t* sem) {
|
int32_t tsem_wait(tsem_t* sem) {
|
||||||
taosThreadMutexLock(&sem->mutex);
|
taosThreadMutexLock(&sem->mutex);
|
||||||
while (sem->count <= 0) {
|
while (sem->count <= 0) {
|
||||||
struct timespec timeout;
|
int ret = taosThreadCondWait(&sem->cond, &sem->mutex);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &timeout);
|
if (0 == ret) {
|
||||||
timeout.tv_sec += 9;
|
continue;
|
||||||
|
} else {
|
||||||
while (sem->count <= 0) {
|
taosThreadMutexUnlock(&sem->mutex);
|
||||||
int ret = taosThreadCondTimedWait(&sem->cond, &sem->mutex, &timeout);
|
return ret;
|
||||||
if (ret == ETIMEDOUT) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sem->count--;
|
sem->count--;
|
||||||
|
|
|
@ -49,12 +49,12 @@ TEST(osSemaphoreTests, Destroy) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip, tsem_wait can not stopped, will block test.
|
// skip, tsem_wait can not stopped, will block test.
|
||||||
TEST(osSemaphoreTests, Wait) {
|
// TEST(osSemaphoreTests, Wait) {
|
||||||
tsem_t sem;
|
// tsem_t sem;
|
||||||
tsem_init(&sem, 0, 0);
|
// tsem_init(&sem, 0, 0);
|
||||||
ASSERT_EQ(tsem_wait(&sem), -1);
|
// ASSERT_EQ(tsem_wait(&sem), -1);
|
||||||
tsem_destroy(&sem);
|
// tsem_destroy(&sem);
|
||||||
}
|
// }
|
||||||
|
|
||||||
TEST(osSemaphoreTests, WaitTime0) {
|
TEST(osSemaphoreTests, WaitTime0) {
|
||||||
tsem_t sem;
|
tsem_t sem;
|
||||||
|
@ -71,7 +71,6 @@ TEST(osSemaphoreTests, WaitTime1) {
|
||||||
tsem_destroy(&sem);
|
tsem_destroy(&sem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(osSemaphoreTests, WaitAndPost) {
|
TEST(osSemaphoreTests, WaitAndPost) {
|
||||||
tsem_t sem;
|
tsem_t sem;
|
||||||
int result = tsem_init(&sem, 0, 0);
|
int result = tsem_init(&sem, 0, 0);
|
||||||
|
|
Loading…
Reference in New Issue