qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From acon...@apache.org
Subject [qpid-dispatch] 02/02: DISPATCH-1274: Separate qd_timer_t lock from server
Date Fri, 01 Mar 2019 19:55:12 GMT
This is an automated email from the ASF dual-hosted git repository.

aconway pushed a commit to branch schedule-zero
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git

commit 9c2371e9628aee40356fbea36e3b53493b0a0853
Author: Alan Conway <aconway@redhat.com>
AuthorDate: Fri Mar 1 14:42:38 2019 -0500

    DISPATCH-1274: Separate qd_timer_t lock from server
    
    qd_timer_t was sharing a lock with qd_server_t for historical reasons.
    Code inspection shows there is no need for the sharing.
    
    - timer.c calls qd_server_timeout() which is thread-safe, and no other server functions.
    - timer calls handlers outside the lock so it doesn't mater what lock is used.
---
 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 1863546..760126d 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1227,7 +1227,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 0fd87c7..c76f77d 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -182,10 +182,10 @@ void qd_timer_cancel(qd_timer_t *timer)
 //=========================================================================
 
 
-void qd_timer_initialize(sys_mutex_t *server_lock)
+void qd_timer_initialize()
 {
     qd_immediate_initialize();
-    lock = server_lock;
+    lock = sys_mutex();
     DEQ_INIT(idle_timers);
     DEQ_INIT(scheduled_timers);
     time_base = 0;
@@ -194,6 +194,7 @@ void qd_timer_initialize(sys_mutex_t *server_lock)
 
 void qd_timer_finalize(void)
 {
+    sys_mutex_free(lock);
     lock = 0;
     qd_immediate_finalize();
 }
diff --git a/src/timer_private.h b/src/timer_private.h
index 263fca5..9f6f1cb 100644
--- a/src/timer_private.h
+++ b/src/timer_private.h
@@ -36,7 +36,7 @@ struct qd_timer_t {
 
 DEQ_DECLARE(qd_timer_t, qd_timer_list_t);
 
-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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


Mime
View raw message