aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr/pollset_posix.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-05-12 16:46:26 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-05-12 16:46:26 -0700
commit2be8de01ef099ec6a35109fb3a3cf465e872d3bc (patch)
tree72e8c0139b46a5b1e5b3f175df3a938490fdcccd /src/core/iomgr/pollset_posix.c
parent5c826d4c3177fe139be3a7a4c0347db8f2c57a4a (diff)
Add strategic unlock points
To allow other threads to progress
Diffstat (limited to 'src/core/iomgr/pollset_posix.c')
-rw-r--r--src/core/iomgr/pollset_posix.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c
index 6f89a7a804..8ffc5e877e 100644
--- a/src/core/iomgr/pollset_posix.c
+++ b/src/core/iomgr/pollset_posix.c
@@ -174,6 +174,8 @@ static void empty_pollset_del_fd(grpc_pollset *pollset, grpc_fd *fd) {}
static int empty_pollset_maybe_work(grpc_pollset *pollset,
gpr_timespec deadline, gpr_timespec now,
int allow_synchronous_callback) {
+ gpr_mu_unlock(&pollset->mu);
+ gpr_mu_lock(&pollset->mu);
return 0;
}
@@ -327,6 +329,8 @@ static int unary_poll_pollset_maybe_work(grpc_pollset *pollset,
}
if (pollset->in_flight_cbs) {
/* Give do_promote priority so we don't starve it out */
+ gpr_mu_unlock(&pollset->mu);
+ gpr_mu_lock(&pollset->mu);
return 0;
}
fd = pollset->data.ptr;