diff options
author | Yash Tibrewal <yashkt@google.com> | 2017-12-05 21:19:52 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-05 21:19:52 -0800 |
commit | a3df36cc2505a89c2f481eea4a66a87b3002844a (patch) | |
tree | 72385cc865094115bc08cb813201d48cb09840bb /include/grpc/support | |
parent | 9dbb6e3a28ae9c5ed3c97913c4c363b15eb7b2cc (diff) | |
parent | 73bb67d054ecb952f10649cc42c998ab7ea8facd (diff) |
Merge pull request #13058 from yashykt/execctx
All instances of exec_ctx being passed around in src/core removed
Diffstat (limited to 'include/grpc/support')
-rw-r--r-- | include/grpc/support/tls.h | 6 | ||||
-rw-r--r-- | include/grpc/support/tls_gcc.h | 5 | ||||
-rw-r--r-- | include/grpc/support/tls_msvc.h | 9 | ||||
-rw-r--r-- | include/grpc/support/tls_pthread.h | 9 |
4 files changed, 29 insertions, 0 deletions
diff --git a/include/grpc/support/tls.h b/include/grpc/support/tls.h index 8519a8350b..4c9e79b6cf 100644 --- a/include/grpc/support/tls.h +++ b/include/grpc/support/tls.h @@ -32,6 +32,12 @@ GPR_TLS_DECL(foo); Thread locals always have static scope. + Declaring a thread local class variable 'foo': + GPR_TLS_CLASS_DECL(foo); + + Defining the thread local class variable: + GPR_TLS_CLASS_DEF(foo); + Initializing a thread local (must be done at library initialization time): gpr_tls_init(&foo); diff --git a/include/grpc/support/tls_gcc.h b/include/grpc/support/tls_gcc.h index 1b91d22be1..b44f0f1c8c 100644 --- a/include/grpc/support/tls_gcc.h +++ b/include/grpc/support/tls_gcc.h @@ -33,6 +33,11 @@ struct gpr_gcc_thread_local { #define GPR_TLS_DECL(name) \ static __thread struct gpr_gcc_thread_local name = {0} +#define GPR_TLS_CLASS_DECL(name) \ + static __thread struct gpr_gcc_thread_local name + +#define GPR_TLS_CLASS_DEF(name) __thread struct gpr_gcc_thread_local name = {0} + #define gpr_tls_init(tls) \ do { \ } while (0) diff --git a/include/grpc/support/tls_msvc.h b/include/grpc/support/tls_msvc.h index e5f2205fc1..68a411f5d4 100644 --- a/include/grpc/support/tls_msvc.h +++ b/include/grpc/support/tls_msvc.h @@ -26,9 +26,18 @@ struct gpr_msvc_thread_local { intptr_t value; }; +/** Use GPR_TLS_DECL to declare tls static variables outside a class */ #define GPR_TLS_DECL(name) \ static __declspec(thread) struct gpr_msvc_thread_local name = {0} +/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DECL(name) \ + static __declspec(thread) struct gpr_msvc_thread_local name + +#define GPR_TLS_CLASS_DEF(name) \ + __declspec(thread) struct gpr_msvc_thread_local name = {0} + #define gpr_tls_init(tls) \ do { \ } while (0) diff --git a/include/grpc/support/tls_pthread.h b/include/grpc/support/tls_pthread.h index fb0edd8e74..249c8b16f8 100644 --- a/include/grpc/support/tls_pthread.h +++ b/include/grpc/support/tls_pthread.h @@ -29,8 +29,17 @@ struct gpr_pthread_thread_local { pthread_key_t key; }; +/** Use GPR_TLS_DECL to declare tls static variables outside a class */ #define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} +/** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DECL(name) static struct gpr_pthread_thread_local name + +/** Use GPR_TLS_CLASS_DEF to declare tls static variable members of a class. + * GPR_TLS_CLASS_DEF needs to be called to define this member. */ +#define GPR_TLS_CLASS_DEF(name) struct gpr_pthread_thread_local name = {0} + #define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) #define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) #define gpr_tls_get(tls) ((intptr_t)pthread_getspecific((tls)->key)) |