LAMA
|
00001 00033 #ifndef LAMA_NOSYNCTOKEN_HPP_ 00034 #define LAMA_NOSYNCTOKEN_HPP_ 00035 00036 // for dll_import 00037 #include <lama/config.hpp> 00038 00039 // base classes 00040 #include <lama/SyncToken.hpp> 00041 00042 namespace lama 00043 { 00044 00045 class LAMA_DLL_IMPORTEXPORT NoSyncToken : public SyncToken 00046 { 00047 public: 00048 00049 inline NoSyncToken(); 00050 00051 inline virtual ~NoSyncToken(); 00052 00053 inline virtual void wait(); 00054 00055 inline virtual bool probe() const; 00056 00057 inline void writeAt( std::ostream& stream ) const; 00058 }; 00059 00060 NoSyncToken::NoSyncToken() 00061 { 00062 LAMA_LOG_DEBUG( logger, "NoSyncToken constructed" ); 00063 } 00064 00065 NoSyncToken::~NoSyncToken() 00066 { 00067 LAMA_LOG_DEBUG( logger, "~NoSyncToken, synchronized = " << isSynchronized() ); 00068 00069 if ( !isSynchronized() ) 00070 { 00071 setSynchronized(); // Important: accesses should be freed 00072 } 00073 } 00074 00075 void NoSyncToken::writeAt( std::ostream& stream ) const 00076 { 00077 stream << "NoSyncToken( synchronized = " << isSynchronized() << " )"; 00078 } 00079 00080 void NoSyncToken::wait() 00081 { 00082 if ( !isSynchronized() ) 00083 { 00084 setSynchronized(); // Important: accesses should be freed 00085 } 00086 } 00087 00088 bool NoSyncToken::probe() const 00089 { 00090 return true; // always ready 00091 } 00092 00093 } 00094 00095 #endif // LAMA_NOSYNCTOKEN_HPP_