00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00022 #ifndef __vtkThreadMessager_h
00023 #define __vtkThreadMessager_h
00024
00025 #include "vtkObject.h"
00026
00027 #if defined(VTK_USE_PTHREADS) || defined(VTK_HP_PTHREADS)
00028 #include <pthread.h>
00029 #endif
00030
00031 class VTK_COMMON_EXPORT vtkThreadMessager : public vtkObject
00032 {
00033 public:
00034 static vtkThreadMessager *New();
00035
00036 vtkTypeRevisionMacro(vtkThreadMessager,vtkObject);
00037 void PrintSelf(ostream& os, vtkIndent indent);
00038
00040 void WaitForMessage();
00041
00043 void SendWakeMessage();
00044
00048 void EnableWaitForReceiver();
00049
00053 void DisableWaitForReceiver();
00054
00057 void WaitForReceiver();
00058
00059 #ifdef VTK_WORKAROUND_WINDOWS_MANGLE
00060 # define SendMessageA SendMessage
00061 # define SendMessageW SendMessage
00062 #endif
00063
00066 VTK_LEGACY(void SendMessage());
00067
00068 #ifdef VTK_WORKAROUND_WINDOWS_MANGLE
00069 # undef SendMessageW
00070 # undef SendMessageA
00071
00072 VTK_LEGACY(void SendMessageA());
00073 VTK_LEGACY(void SendMessageW());
00074
00075 #endif
00076
00077 protected:
00078 vtkThreadMessager();
00079 ~vtkThreadMessager();
00080
00081 #ifdef VTK_USE_PTHREADS
00082 pthread_mutex_t Mutex;
00083 pthread_cond_t PSignal;
00084 #endif
00085
00086 #ifdef VTK_USE_WIN32_THREADS
00087 vtkWindowsHANDLE WSignal;
00088 #endif
00089
00090 private:
00091 vtkThreadMessager(const vtkThreadMessager&);
00092 void operator=(const vtkThreadMessager&);
00093 };
00094
00095 #endif
00096
00097
00098
00099
00100