From 27d8bc7cad4a8f68c2da3efbb77f45ec70ae40e6 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期三, 05 一月 2022 14:11:39 +0800 Subject: [PATCH] pb.go MsgQueryProcReply add subLocalTopics and subNetTopics --- src/psem.h | 40 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/psem.h b/src/psem.h index 30c6670..41b76e6 100644 --- a/src/psem.h +++ b/src/psem.h @@ -2,13 +2,45 @@ #define _PSEM_H_ #include "usg_common.h" +#include <semaphore.h> +#include "time_util.h" -int psem_wait(sem_t *sem) ; +inline int psem_timedwait(sem_t *sem, const struct timespec *ts) { + struct timespec abs_timeout = TimeUtil::calc_abs_time(ts); + // return sem_timedwait(sem, &abs_timeout); + int rv ; + while ( (rv = sem_timedwait(sem, &abs_timeout)) == -1) { + if(errno == EINTR) + continue; + else { + // LoggerFactory::getLogger()->error(errno, "LockFreeQueue push_timeout"); + return -1; + } + } + return 0; +} -int psem_timedwait(sem_t *sem, const struct timespec *ts); -int psem_trywait(sem_t *sem) ; +inline int psem_wait(sem_t *sem) { + // return sem_wait(sem); + int rv; + while ( (rv = sem_wait(sem)) == -1) { + if(errno == EINTR) + continue; + else { + return -1; + } + } + return 0; +} -int psem_post(sem_t *sem); +inline int psem_trywait(sem_t *sem) { + return sem_trywait(sem); +} + +inline int psem_post(sem_t *sem) { + return sem_post(sem); +} + #endif -- Gitblit v1.8.0