00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __itkSimpleFastMutexLock_h
00021 #define __itkSimpleFastMutexLock_h
00022
00023 #include "itkMacro.h"
00024
00025 #ifdef ITK_USE_SPROC
00026 #include <abi_mutex.h>
00027 #endif
00028
00029 #ifdef ITK_USE_PTHREADS
00030 #include <pthread.h>
00031 #endif
00032
00033 #if defined(_WIN32) && !defined(ITK_USE_PTHREADS)
00034 #include "itkWindows.h"
00035 #endif
00036
00037 namespace itk
00038 {
00039
00040 #ifdef ITK_USE_SPROC
00041 #include <abi_mutex.h>
00042 typedef abilock_t FastMutexType;
00043 #endif
00044
00045 #ifdef ITK_USE_PTHREADS
00046 #include <pthread.h>
00047 typedef pthread_mutex_t FastMutexType;
00048 #endif
00049
00050 #if defined(_WIN32) && !defined(ITK_USE_PTHREADS)
00051 #include <winbase.h>
00052 typedef CRITICAL_SECTION FastMutexType;
00053 #endif
00054
00055 #ifndef ITK_USE_SPROC
00056 #ifndef ITK_USE_PTHREADS
00057 #ifndef _WIN32
00058 typedef int FastMutexType;
00059 #endif
00060 #endif
00061 #endif
00062
00073
00074 class ITK_EXPORT SimpleFastMutexLock
00075 {
00076 public:
00078 typedef SimpleFastMutexLock Self;
00079
00081 SimpleFastMutexLock();
00082 ~SimpleFastMutexLock();
00083
00085 void Lock( void ) const;
00086
00088 void Unlock( void ) const;
00089
00090 protected:
00091 mutable FastMutexType m_FastMutexLock;
00092 };
00093
00094 }
00095 #endif
00096