diff options
author | evanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-20 22:11:47 +0000 |
---|---|---|
committer | evanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-20 22:11:47 +0000 |
commit | fa87a2527ca8c0bcef92d8e44791332782936911 (patch) | |
tree | 04dc5d1e6881f8356f91203a386648057b20d924 /base/thread_local_storage.h | |
parent | 4f64d0af5908e36d356c834005d08cca98d579fe (diff) | |
download | chromium_src-fa87a2527ca8c0bcef92d8e44791332782936911.zip chromium_src-fa87a2527ca8c0bcef92d8e44791332782936911.tar.gz chromium_src-fa87a2527ca8c0bcef92d8e44791332782936911.tar.bz2 |
Revert. Failing unit tests.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1118 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/thread_local_storage.h')
-rw-r--r-- | base/thread_local_storage.h | 81 |
1 files changed, 29 insertions, 52 deletions
diff --git a/base/thread_local_storage.h b/base/thread_local_storage.h index fba90ae..245a73f 100644 --- a/base/thread_local_storage.h +++ b/base/thread_local_storage.h @@ -32,62 +32,43 @@ #include "base/basictypes.h" -#if defined(OS_POSIX) +#if defined(OS_WIN) +typedef int TLSSlot; +#elif defined(OS_POSIX) #include <pthread.h> -#endif +typedef pthread_key_t TLSSlot; +#endif // OS_* -// Wrapper for thread local storage. This class doesn't do much except provide -// an API for portability. +// Wrapper for thread local storage. This class doesn't +// do much except provide an API for portability later. class ThreadLocalStorage { public: - - // Prototype for the TLS destructor function, which can be optionally used to - // cleanup thread local storage on thread exit. 'value' is the data that is - // stored in thread local storage. + // Prototype for the TLS destructor function, which can be + // optionally used to cleanup thread local storage on + // thread exit. 'value' is the data that is stored + // in thread local storage. typedef void (*TLSDestructorFunc)(void* value); - // A key representing one value stored in TLS. - class Slot { - public: - Slot(TLSDestructorFunc destructor = NULL); - - // This constructor should be used for statics. - // It returns an uninitialized Slot. - explicit Slot(base::LinkerInitialized x) {} - - // Set up the TLS slot. Called by the constructor. - // 'destructor' is a pointer to a function to perform per-thread cleanup of - // this object. If set to NULL, no cleanup is done for this TLS slot. - // Returns false on error. - bool Initialize(TLSDestructorFunc destructor); - - // Free a previously allocated TLS 'slot'. - // If a destructor was set for this slot, removes - // the destructor so that remaining threads exiting - // will not free data. - void Free(); + // Allocate a TLS 'slot'. + // 'destructor' is a pointer to a function to perform + // per-thread cleanup of this object. If set to NULL, + // no cleanup is done for this TLS slot. + // Returns an index > 0 on success, or -1 on failure. + static TLSSlot Alloc(TLSDestructorFunc destructor = NULL); - // Get the thread-local value stored in slot 'slot'. - // Values are guaranteed to initially be zero. - void* Get() const; + // Free a previously allocated TLS 'slot'. + // If a destructor was set for this slot, removes + // the destructor so that remaining threads exiting + // will not free data. + static void Free(TLSSlot slot); - // Set the thread-local value stored in slot 'slot' to - // value 'value'. - void Set(void* value); + // Get the thread-local value stored in slot 'slot'. + // Values are guaranteed to initially be zero. + static void* Get(TLSSlot slot); - bool initialized() const { return initialized_; } - - private: - // The internals of this struct should be considered private. - bool initialized_; -#if defined(OS_WIN) - int slot_; -#elif defined(OS_POSIX) - pthread_key_t key_; -#endif - - DISALLOW_COPY_AND_ASSIGN(Slot); - }; + // Set the thread-local value stored in slot 'slot' to + // value 'value'. + static void Set(TLSSlot slot, void* value); #if defined(OS_WIN) // Function called when on thread exit to call TLS @@ -109,11 +90,7 @@ class ThreadLocalStorage { static TLSDestructorFunc tls_destructors_[kThreadLocalStorageSize]; #endif // OS_WIN - DISALLOW_COPY_AND_ASSIGN(ThreadLocalStorage); + DISALLOW_EVIL_CONSTRUCTORS(ThreadLocalStorage); }; -// Temporary backwards-compatible name. -// TODO(evanm): replace all usage of TLSSlot. -typedef ThreadLocalStorage::Slot TLSSlot; - #endif // BASE_THREAD_LOCAL_STORAGE_H_ |