Ignore:
Timestamp:
May 5, 2016, 1:06:20 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Children:
c1e104
Parents:
039e15
git-author:
Frederik Heber <heber@…> (05/05/16 09:20:08)
git-committer:
Frederik Heber <heber@…> (05/05/16 13:06:20)
Message:

Singleton extended to also return AtomicInstance-wrapped instance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodePatterns/Singleton_impl.hpp

    r039e15 rc6a59b  
    4545  }
    4646  return *theInstance;
     47}
     48
     49template <class T,bool _may_create>
     50AtomicInstance<T> Singleton<T,_may_create>::getLockedInstance(){
     51  // boost supports RAII-Style locking, so we don't need to unlock
     52  boost::recursive_mutex::scoped_lock guard(instanceLock);
     53  if(!theInstance.get()) {
     54    theInstance.reset(creator::make());
     55  }
     56  T *ptr = theInstance.get();
     57  return AtomicInstance<T>(ptr);
    4758}
    4859
     
    120131    template name& Singleton< name , name::may_create >::getInstance(); \
    121132    template const name& Singleton< name , name::may_create >::getConstInstance(); \
     133    template AtomicInstance<name> Singleton< name , name::may_create >::getLockedInstance(); \
    122134    template name* Singleton< name , name::may_create >::getPointer();  \
    123135    template const name* Singleton< name , name::may_create >::getConstPointer();  \
Note: See TracChangeset for help on using the changeset viewer.