Linux fix for TlsVariable.inl (I hope). SafeArray fix will have to come later.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3601 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2010-08-04 19:36:15 +00:00
parent c439d1bef2
commit d231c537b9
1 changed files with 14 additions and 16 deletions

View File

@ -26,10 +26,17 @@
namespace Threading
{
// --------------------------------------------------------------------------------------
// BaseTlsVariable
// TlsVariable - Thread local storage
// --------------------------------------------------------------------------------------
// This container is for complex non-copyable objects that require explicit cleanup and
// stuff (most classes). For simple types and such, use TlsVariable.
// Wrapper class for pthread_getspecific, which is pthreads language for "thread local
// storage." This class enables code to act as a drop-in replacement for compiler-native
// thread local storage (typically specified via __threadlocal). Mac OS/X (Darwin) does
// not have TLS, which is the main reason for this class existing.
//
// Performance considerations: While certainly convenient, performance of this class can
// be sub-optimal when the operator overloads are used, since each one will most likely
// result in repeated calls to pthread_getspecific. (if the function inlines then it
// should actually optimize well enough, but I doubt it does).
//
template< typename T >
class BaseTlsVariable
@ -80,19 +87,7 @@ protected:
}
};
// --------------------------------------------------------------------------------------
// TlsVariable - Thread local storage
// --------------------------------------------------------------------------------------
// Wrapper class for pthread_getspecific, which is pthreads language for "thread local
// storage." This class enables code to act as a drop-in replacement for compiler-native
// thread local storage (typically specified via __threadlocal). Mac OS/X (Darwin) does
// not have TLS, which is the main reason for this class existing.
//
// Performance considerations: While certainly convenient, performance of this class can
// be sub-optimal when the operator overloads are used, since each one will most likely
// result in repeated calls to pthread_getspecific. (if the function inlines then it
// should actually optimize well enough, but I doubt it does).
//
template< typename T >
class TlsVariable : public BaseTlsVariable<T>
{
@ -114,6 +109,9 @@ public:
m_IsDisposed = true;
}
// This is needed the C++ standard likes making life suck for programmers.
using BaseTlsVariable<T>::GetRef;
TlsVariable& operator=( const T& src )
{
GetRef() = src;