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 ITKCommon_EXPORT SimpleFastMutexLock
00075 {
00076 public:
00078 typedef SimpleFastMutexLock Self;
00079
00081 SimpleFastMutexLock();
00082 ~SimpleFastMutexLock();
00084
00086 void Lock() const;
00087
00089 void Unlock() const;
00090
00091 protected:
00092 mutable FastMutexType m_FastMutexLock;
00093 };
00094
00095 }
00096 #endif
00097