Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void onUpdate(Update* update)
- {
- static MutexT lock;
- static hash_set<UpdateID> set;
- ScopedGuard _(lock); //lock here
- hash_set<UpdateID>::iterator it = set.find(update->id);
- if (it == set.end())
- set.insert(update->id);
- else
- return;
- listener->onUpdate(/*some stuff*/);
- }
- boost::shared_mutex mutex_;
- std::unordered_set<UpdateID> set_;
- void onUpdate(const Update& update)
- {
- boost::upgrade_lock<boost::shared_mutex> lock(mutex_);
- auto it = set_.find(update.id);
- if(it == set_.end())
- {
- boost::upgrade_to_unique_lock<boost::shared_mutex> unique_lock(mutex_);
- set.insert(update.id);
- }
- listener->onUpdate(/*some stuff*/);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement