From cb7bf8a0571def53a538fb8b34f53f98fdb5611a Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 9 Oct 2015 16:18:15 -0700 Subject: [PATCH] Set current worker for longer ==> Less self kicking ==> Double performance for sync_unary_ping_pong_test on my machine --- src/core/iomgr/pollset_posix.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 6c813bf27af..d93f3398778 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -280,16 +280,15 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, if (!added_worker) { push_front_worker(pollset, worker); added_worker = 1; + gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); } gpr_tls_set(&g_current_thread_poller, (gpr_intptr)pollset); - gpr_tls_set(&g_current_thread_worker, (gpr_intptr)worker); GRPC_TIMER_BEGIN("maybe_work_and_unlock", 0); pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker, deadline, now); GRPC_TIMER_END("maybe_work_and_unlock", 0); locked = 0; gpr_tls_set(&g_current_thread_poller, 0); - gpr_tls_set(&g_current_thread_worker, 0); } else { pollset->kicked_without_pollers = 0; } @@ -319,6 +318,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, } if (added_worker) { remove_worker(pollset, worker); + gpr_tls_set(&g_current_thread_worker, 0); } grpc_wakeup_fd_destroy(&worker->wakeup_fd); if (pollset->shutting_down) {