Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. void onUpdate(Update* update)
  2. {
  3. static MutexT lock;
  4. static hash_set<UpdateID> set;
  5.  
  6. ScopedGuard _(lock); //lock here
  7. hash_set<UpdateID>::iterator it = set.find(update->id);
  8. if (it == set.end())
  9. set.insert(update->id);
  10. else
  11. return;
  12.  
  13. listener->onUpdate(/*some stuff*/);
  14. }
  15.  
  16. boost::shared_mutex mutex_;
  17. std::unordered_set<UpdateID> set_;
  18.  
  19. void onUpdate(const Update& update)
  20. {
  21. boost::upgrade_lock<boost::shared_mutex> lock(mutex_);
  22.  
  23. auto it = set_.find(update.id);
  24. if(it == set_.end())
  25. {
  26. boost::upgrade_to_unique_lock<boost::shared_mutex> unique_lock(mutex_);
  27. set.insert(update.id);
  28. }
  29.  
  30. listener->onUpdate(/*some stuff*/);
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement