00001 /* 00002 * This file contains class that encapsulate system critical section. 00003 * 00004 * Author: 00005 * Tomas Mrkvicka 00006 * xmrkvi03@stud.fit.vutbr.cz 00007 * 00008 */ 00009 00010 #include <windows.h> 00011 00012 //FORWARD DECLARATIONS 00013 namespace NSPipeline 00014 { 00015 class TCriticalSection; 00016 }; 00017 00018 #ifndef _PIPELINE_CRITICALSECTION_HH_ 00019 #define _PIPELINE_CRITICALSECTION_HH_ 00020 00021 namespace NSPipeline 00022 { 00023 00024 //////////////////////////////////////////////////////////////////////////////// 00025 //////////////////////////////////////////////////////////////////////////////// 00026 //////////////////////////////////////////////////////////////////////////////// 00027 // TCriticalSection 00028 00029 /** Trida pro zjednoduseni prace s kritickou sekci. 00030 * 00031 * V aplikaci musi byt vzdy pouzita dvojice volani TCriticalSection::Enter() 00032 * a TCriticalSection::Leave(). 00033 */ 00034 class TCriticalSection 00035 { 00036 //PUBLIC METHODS 00037 public: 00038 TCriticalSection(void); 00039 ~TCriticalSection(void); 00040 00041 void Enter(void); 00042 void Leave(void); 00043 00044 //PRIVATE FAKE METHODS 00045 private: 00046 TCriticalSection( const TCriticalSection & orig ); ///< falesny kopirovaci konstruktor 00047 void operator=( const TCriticalSection & orig ); ///< falesny operator prirazeni 00048 00049 //PRIVATE COMPONENTS 00050 private: 00051 CRITICAL_SECTION m_section; ///< systemove zavisla kriticka sekce z Windows 00052 }; 00053 //OK 2007-08-25 02:21:00 B04-315B\Tom 00054 00055 // TCriticalSection 00056 //////////////////////////////////////////////////////////////////////////////// 00057 //////////////////////////////////////////////////////////////////////////////// 00058 //////////////////////////////////////////////////////////////////////////////// 00059 00060 };//end of NSPipeline 00061 using namespace NSPipeline; 00062 00063 #endif