aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr/pollset_windows.h
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-09-29 11:19:06 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-09-29 11:19:06 -0700
commit084c8089a4ca3f9e1a5516751a9562b902926f3b (patch)
treee70c233ef621ab10113ce9c6ca62d293defa08af /src/core/iomgr/pollset_windows.h
parent3ccd9613dab3c4de1e679ef2fc8b01ac24d4fbc0 (diff)
Threading fixes
- single global mutex (simpler, easier to make correct for now) - properly flag kick state for workers to avoid missing wakeups (if signal is called before wait on the cv)
Diffstat (limited to 'src/core/iomgr/pollset_windows.h')
-rw-r--r--src/core/iomgr/pollset_windows.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/core/iomgr/pollset_windows.h b/src/core/iomgr/pollset_windows.h
index 55f87aca72..65ba80619b 100644
--- a/src/core/iomgr/pollset_windows.h
+++ b/src/core/iomgr/pollset_windows.h
@@ -54,20 +54,26 @@ typedef struct grpc_pollset_worker_link {
struct grpc_pollset_worker *prev;
} grpc_pollset_worker_link;
+struct grpc_pollset;
+typedef struct grpc_pollset grpc_pollset;
+
typedef struct grpc_pollset_worker {
gpr_cv cv;
+ int kicked;
+ struct grpc_pollset *pollset;
grpc_pollset_worker_link links[GRPC_POLLSET_WORKER_LINK_TYPES];
} grpc_pollset_worker;
-typedef struct grpc_pollset {
- gpr_mu mu;
+struct grpc_pollset {
int shutting_down;
int kicked_without_pollers;
int is_iocp_worker;
grpc_pollset_worker root_worker;
grpc_closure *on_shutdown;
-} grpc_pollset;
+};
+
+extern gpr_mu grpc_polling_mu;
-#define GRPC_POLLSET_MU(pollset) (&(pollset)->mu)
+#define GRPC_POLLSET_MU(pollset) (&grpc_polling_mu)
#endif /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_WINDOWS_H */