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