c++ - In a multithreaded app, how would I use the atomic builtins to set/view a time_t value? -


i have app highly threaded.

the threads in app read shared memory mapped file. can assume never write it.

now need extend when reader has finished reading file, update shared timestamp. i.e. time_t last_access_time = time(null);

that happens often, prefer search lock-free implementation if @ possible.

how go setting or checking current value of last_access_time using atomic builtins in g++?

e.g. suppose have these class members , _last_access_time initialised time(null)

time_t _last_access_time;  void updatelastaccesstime(){      _last_access_time = time(null); }  void getlastaccesstime(){      return _last_access_time; } 

is possible make lock free?

class someclass { public:     inline     someclass ()         : m_lastaccesstime (0)     { ; }      inline void     updatelastaccesstime ()     {         time_t crttime = time (null);         time_t lasttime = m_lastaccesstime;          while (crttime > lasttime)         {             lasttime = __sync_val_compare_and_swap (                 &m_lastaccesstime,                 lasttime,                 crttime);         }     }      inline time_t     getlastaccesstime () const     {          return m_lastaccesstime;     }  private:     volatile time_t m_lastaccesstime; }; 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -