This is an automated email from the ASF dual-hosted git repository.
kgiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/main by this push:
new bf13598 DISPATCH-1274: avoid sharing mutex between timer and server
bf13598 is described below
commit bf1359829afbf126ad5dc0dd6bf76ebf34f08bac
Author: Kenneth Giusti <[email protected]>
AuthorDate: Wed Aug 25 16:37:09 2021 -0400
DISPATCH-1274: avoid sharing mutex between timer and server
Historically the qd_server_t and the timer subsystem have shared a
single mutex. There is no technical reason for this as each use the
lock to protect entirely separate critial sections.
Recent analysis of lock usage shows that the timer subsystem makes
heavy use of the lock. This patch introduces separate locks as to
avoid any contention between the qd_server_t and timer operations.
This closes #1350
---
src/server.c | 2 +-
src/timer.c | 5 +++--
src/timer_private.h | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/server.c b/src/server.c
index 75527b2..0d46665 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1385,7 +1385,7 @@ qd_server_t *qd_server(qd_dispatch_t *qd, int
thread_count, const char *containe
qd_server->cond = sys_cond();
DEQ_INIT(qd_server->conn_list);
- qd_timer_initialize(qd_server->lock);
+ qd_timer_initialize();
qd_server->pause_requests = 0;
qd_server->threads_paused = 0;
diff --git a/src/timer.c b/src/timer.c
index 441bbad..d015469 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -279,9 +279,9 @@ void qd_timer_cancel(qd_timer_t *timer)
//=========================================================================
-void qd_timer_initialize(sys_mutex_t *server_lock)
+void qd_timer_initialize()
{
- lock = server_lock;
+ lock = sys_mutex();
DEQ_INIT(scheduled_timers);
time_base = 0;
}
@@ -289,6 +289,7 @@ void qd_timer_initialize(sys_mutex_t *server_lock)
void qd_timer_finalize(void)
{
+ sys_mutex_free(lock);
lock = 0;
}
diff --git a/src/timer_private.h b/src/timer_private.h
index 830c8ff..12c19bc 100644
--- a/src/timer_private.h
+++ b/src/timer_private.h
@@ -22,7 +22,7 @@
#include "qpid/dispatch/timer.h"
#include "qpid/dispatch/threading.h"
-void qd_timer_initialize(sys_mutex_t *server_lock);
+void qd_timer_initialize(void);
void qd_timer_finalize(void);
void qd_timer_visit();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]