Removed callback queue sync from iomgr.
diff --git a/src/core/iomgr/iomgr.c b/src/core/iomgr/iomgr.c
index d0e6706..c845cae 100644
--- a/src/core/iomgr/iomgr.c
+++ b/src/core/iomgr/iomgr.c
@@ -50,7 +50,6 @@
 } delayed_callback;
 
 static gpr_mu g_mu;
-static gpr_cv g_cv;
 static gpr_cv g_rcv;
 static delayed_callback *g_cbs_head = NULL;
 static delayed_callback *g_cbs_tail = NULL;
@@ -64,6 +63,8 @@
   gpr_mu_lock(&g_mu);
   while (!g_shutdown) {
     gpr_timespec deadline = gpr_inf_future;
+    gpr_timespec short_deadline =
+        gpr_time_add(gpr_now(), gpr_time_from_millis(100));
     if (g_cbs_head) {
       delayed_callback *cb = g_cbs_head;
       g_cbs_head = cb->next;
@@ -74,19 +75,20 @@
       gpr_mu_lock(&g_mu);
     } else if (grpc_alarm_check(&g_mu, gpr_now(), &deadline)) {
     } else {
-      gpr_cv_wait(&g_cv, &g_mu, deadline);
+      gpr_mu_unlock(&g_mu);
+      gpr_sleep_until(gpr_time_min(short_deadline, deadline));
+      gpr_mu_lock(&g_mu);
     }
   }
   gpr_mu_unlock(&g_mu);
   gpr_event_set(&g_background_callback_executor_done, (void *)1);
 }
 
-void grpc_kick_poller(void) { gpr_cv_broadcast(&g_cv); }
+void grpc_kick_poller(void) { }
 
 void grpc_iomgr_init(void) {
   gpr_thd_id id;
   gpr_mu_init(&g_mu);
-  gpr_cv_init(&g_cv);
   gpr_cv_init(&g_rcv);
   grpc_alarm_list_init(gpr_now());
   g_refs = 0;
@@ -143,7 +145,6 @@
   grpc_iomgr_platform_shutdown();
   grpc_alarm_list_shutdown();
   gpr_mu_destroy(&g_mu);
-  gpr_cv_destroy(&g_cv);
   gpr_cv_destroy(&g_rcv);
 }
 
@@ -175,7 +176,6 @@
     g_cbs_tail->next = dcb;
     g_cbs_tail = dcb;
   }
-  gpr_cv_signal(&g_cv);
   gpr_mu_unlock(&g_mu);
 }