per_thread_tls.h
Go to the documentation of this file.
00001 // Copyright 2017 The Abseil Authors.
00002 //
00003 // Licensed under the Apache License, Version 2.0 (the "License");
00004 // you may not use this file except in compliance with the License.
00005 // You may obtain a copy of the License at
00006 //
00007 //      https://www.apache.org/licenses/LICENSE-2.0
00008 //
00009 // Unless required by applicable law or agreed to in writing, software
00010 // distributed under the License is distributed on an "AS IS" BASIS,
00011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00012 // See the License for the specific language governing permissions and
00013 // limitations under the License.
00014 
00015 #ifndef ABSL_BASE_INTERNAL_PER_THREAD_TLS_H_
00016 #define ABSL_BASE_INTERNAL_PER_THREAD_TLS_H_
00017 
00018 // This header defines two macros:
00019 //
00020 // If the platform supports thread-local storage:
00021 //
00022 // * ABSL_PER_THREAD_TLS_KEYWORD is the C keyword needed to declare a
00023 //   thread-local variable
00024 // * ABSL_PER_THREAD_TLS is 1
00025 //
00026 // Otherwise:
00027 //
00028 // * ABSL_PER_THREAD_TLS_KEYWORD is empty
00029 // * ABSL_PER_THREAD_TLS is 0
00030 //
00031 // Microsoft C supports thread-local storage.
00032 // GCC supports it if the appropriate version of glibc is available,
00033 // which the programmer can indicate by defining ABSL_HAVE_TLS
00034 
00035 #include "absl/base/port.h"  // For ABSL_HAVE_TLS
00036 
00037 #if defined(ABSL_PER_THREAD_TLS)
00038 #error ABSL_PER_THREAD_TLS cannot be directly set
00039 #elif defined(ABSL_PER_THREAD_TLS_KEYWORD)
00040 #error ABSL_PER_THREAD_TLS_KEYWORD cannot be directly set
00041 #elif defined(ABSL_HAVE_TLS)
00042 #define ABSL_PER_THREAD_TLS_KEYWORD __thread
00043 #define ABSL_PER_THREAD_TLS 1
00044 #elif defined(_MSC_VER)
00045 #define ABSL_PER_THREAD_TLS_KEYWORD __declspec(thread)
00046 #define ABSL_PER_THREAD_TLS 1
00047 #else
00048 #define ABSL_PER_THREAD_TLS_KEYWORD
00049 #define ABSL_PER_THREAD_TLS 0
00050 #endif
00051 
00052 #endif  // ABSL_BASE_INTERNAL_PER_THREAD_TLS_H_


abseil_cpp
Author(s):
autogenerated on Wed Jun 19 2019 19:42:15