From cb85aa8a8d02a3d6dc16e3f32e78da9e70f9c7f5 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 02 二月 2021 17:49:21 +0800 Subject: [PATCH] update --- src/psem.cpp | 23 ++++------------------- 1 files changed, 4 insertions(+), 19 deletions(-) diff --git a/src/psem.cpp b/src/psem.cpp index 8d9333f..fd06216 100644 --- a/src/psem.cpp +++ b/src/psem.cpp @@ -1,26 +1,11 @@ #include "psem.h" #include <semaphore.h> +#include "time_util.h" -#define NANO 1000000000 - - -static struct timespec psem_calc_abs_timeout(const struct timespec *ts) { - - struct timespec res; - struct timespec timeout; - if (clock_gettime(CLOCK_REALTIME, &timeout) == -1) - err_exit(errno, "clock_gettime"); - - res.tv_sec = timeout.tv_sec + ts->tv_sec; - res.tv_nsec = timeout.tv_nsec + ts->tv_nsec; - res.tv_sec = res.tv_sec + floor(res.tv_nsec / NANO); - res.tv_nsec = res.tv_nsec % NANO; - return res; -} int psem_timedwait(sem_t *sem, const struct timespec *ts) { - struct timespec abs_timeout = psem_calc_abs_timeout(ts); + struct timespec abs_timeout = TimeUtil::calc_abs_time(ts); int rv ; while ( (rv = sem_timedwait(sem, &abs_timeout)) == -1) { @@ -28,7 +13,7 @@ continue; else { // LoggerFactory::getLogger()->error(errno, "LockFreeQueue push_timeout"); - return rv; + return -1; } } return 0; @@ -42,7 +27,7 @@ continue; else { // LoggerFactory::getLogger()->error(errno, "LockFreeQueue push_timeout"); - return rv; + return -1; } } return 0; -- Gitblit v1.8.0