From 6de74d5e60a9a5ecd417a5473a3b567e51ca2de8 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 25 一月 2021 15:14:23 +0800
Subject: [PATCH] update
---
src/queue/lock_free_queue.h | 87 +++++++++++++++++++++----------------------
1 files changed, 43 insertions(+), 44 deletions(-)
diff --git a/src/queue/lock_free_queue.h b/src/queue/lock_free_queue.h
index 9245d3e..723e373 100644
--- a/src/queue/lock_free_queue.h
+++ b/src/queue/lock_free_queue.h
@@ -207,31 +207,31 @@
template<typename ELEM_T,
- typename Allocator,
- template<typename T, typename AT> class Q_TYPE>
+ typename Allocator,
+ template<typename T, typename AT> class Q_TYPE>
int LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::push(const ELEM_T &a_data, const struct timespec *timeout, int flag) {
- LoggerFactory::getLogger()->debug("==================LockFreeQueue push before\n");
- if ((flag & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) {
- if (psem_trywait(&slots) == -1) {
- return -1;
- }
- } else if ((flag & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) {
- if (psem_timedwait(&slots, timeout) == -1) {
- return -1;
- }
- } else {
- if (psem_wait(&slots) == -1) {
- return -1;
- }
- }
+ LoggerFactory::getLogger()->debug("==================LockFreeQueue push before\n");
+ if ((flag & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) {
+ if (psem_trywait(&slots) == -1) {
+ return errno;
+ }
+ } else if ((flag & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) {
+ if (psem_timedwait(&slots, timeout) == -1) {
+ return errno;
+ }
+ } else {
+ if (psem_wait(&slots) == -1) {
+ return errno;
+ }
+ }
- if (m_qImpl.push(a_data)) {
- psem_post(&items);
- LoggerFactory::getLogger()->debug("==================LockFreeQueue push after\n");
- return 0;
- }
- return -1;
+ if (m_qImpl.push(a_data)) {
+ psem_post(&items);
+ LoggerFactory::getLogger()->debug("==================LockFreeQueue push after\n");
+ return 0;
+ }
+ return -1;
}
@@ -239,31 +239,30 @@
typename Allocator,
template<typename T, typename AT> class Q_TYPE>
int LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::pop(ELEM_T &a_data, const struct timespec *timeout, int flag) {
+ LoggerFactory::getLogger()->debug("==================LockFreeQueue pop before....");
- LoggerFactory::getLogger()->debug("==================LockFreeQueue pop before\n");
+ if ((flag & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) {
+ if (psem_trywait(&items) == -1) {
+ return errno;
+ }
+ } else if ((flag & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) {
+ LoggerFactory::getLogger()->debug("==================LockFreeQueue pop before. flag=%d , %d\n", flag, timeout->tv_sec);
+ if (psem_timedwait(&items, timeout) == -1) {
+ return errno;
+ }
+ } else {
+ if (psem_wait(&items) == -1) {
+ return errno;
+ }
+ }
- if ((flag & BUS_NOWAIT_FLAG) == BUS_NOWAIT_FLAG) {
- if (psem_trywait(&items) == -1) {
- return -1;
- }
- } else if ((flag & BUS_TIMEOUT_FLAG) == BUS_TIMEOUT_FLAG && timeout != NULL) {
- if (psem_timedwait(&items, timeout) == -1) {
- return -1;
- }
- } else {
- if (psem_wait(&items) == -1) {
- return -1;
- }
- }
-
-
- if (m_qImpl.pop(a_data)) {
- psem_post(&slots);
- LoggerFactory::getLogger()->debug("==================LockFreeQueue pop after\n");
- return 0;
- }
- return -1;
+ if (m_qImpl.pop(a_data)) {
+ psem_post(&slots);
+ LoggerFactory::getLogger()->debug("==================LockFreeQueue pop after\n");
+ return 0;
+ }
+ return -1;
}
template<typename ELEM_T,
--
Gitblit v1.8.0