Advertisement
Guest User

Untitled

a guest
Oct 31st, 2013
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. template<class T>
  2. class SharedMemory
  3. {
  4. public:
  5.     SharedMemory() { m_empty = true;}
  6.     ~SharedMemory() {}
  7.  
  8.     T getData(bool& validreturn)
  9.     {
  10.         m_cs.enterCriticalSection();
  11.         if (m_empty)
  12.         {
  13.             m_cs.leaveCriticalSection();
  14.             validreturn = false;
  15.             return T();
  16.         }
  17.         //Data in the shared memory
  18.         T data = m_data;
  19.         m_empty = true;
  20.         m_cs.leaveCriticalSection();
  21.         validreturn = true;
  22.         return data;
  23.     }
  24.     bool setData(const T& data)
  25.     {
  26.         m_cs.enterCriticalSection();
  27.         if (!m_empty)
  28.         {
  29.             m_cs.leaveCriticalSection();
  30.             return false;
  31.         }
  32.         //Shared memory is empty so fill it
  33.         m_data = data;
  34.         m_empty = false;
  35.         m_cs.leaveCriticalSection();
  36.         return true;
  37.     }
  38. protected:
  39. private:
  40.     T m_data;
  41.     bool m_empty;
  42.     CriticalSection m_cs;
  43. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement