[
https://issues.apache.org/jira/browse/DISPATCH-2238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17404469#comment-17404469
]
ASF GitHub Bot commented on DISPATCH-2238:
------------------------------------------
kgiusti commented on a change in pull request #1349:
URL: https://github.com/apache/qpid-dispatch/pull/1349#discussion_r695775137
##########
File path: src/router_core/router_core_thread.c
##########
@@ -213,25 +187,48 @@ void *router_core_thread(void *arg)
//
sys_mutex_lock(core->action_lock);
- //
- // Block on the condition variable when there is no action to do
- //
- while (core->running && DEQ_IS_EMPTY(core->action_list)) {
- if (!router_core_process_background_action_LH(core))
- sys_cond_wait(core->action_cond, core->action_lock);
+ for (;;) {
+ if (!DEQ_IS_EMPTY(core->action_list)) {
Review comment:
I originally tried exactly that - it was slightly slower than doing the
check before the move. That lock is so heavily contended that *any* extra
instructions run while holding the lock results in longer acquire times by the
I/O threads.
We should be good with initializing the local prior to entering the loop.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
> Avoid holding the core action lock when waking the core thread
> --------------------------------------------------------------
>
> Key: DISPATCH-2238
> URL: https://issues.apache.org/jira/browse/DISPATCH-2238
> Project: Qpid Dispatch
> Issue Type: Improvement
> Components: Router Node
> Affects Versions: 1.17.0
> Reporter: Ken Giusti
> Assignee: Ken Giusti
> Priority: Minor
> Fix For: 1.18.0
>
>
> Currently when an action is queued for the core to process, the queuing code
> calls pthread_cond_signal() while holding the associated mutex. This can
> cause the core thread to be woken then immediately put sleep while taking the
> mutex.
>
> It is legal to call pthread_cond_signal() without holding the lock. Doing
> this will avoid contention on the associated mutex.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]