var.template.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef AFUN_VAR_TEMPLATE_H
  2. #define AFUN_VAR_TEMPLATE_H
  3. namespace aFuncore {
  4. template <typename Callable, typename...T>
  5. void VarSpace::forEach(Callable func, T...arg) {
  6. std::unique_lock<std::mutex> mutex{lock};
  7. for (auto &tmp : var) {
  8. mutex.unlock();
  9. func(tmp.second, arg...);
  10. mutex.lock();
  11. }
  12. }
  13. template <typename Callable, typename...T>
  14. void VarSpace::forEachLock(Callable func, T...arg) {
  15. std::unique_lock<std::mutex> mutex{lock};
  16. for (auto &tmp : var)
  17. func(tmp.second, arg...);
  18. }
  19. template <typename Callable, typename...T>
  20. void VarList::forEach(Callable func, T...arg) {
  21. std::unique_lock<std::mutex> mutex{lock};
  22. for (auto &vs : varspace) {
  23. mutex.unlock();
  24. func(vs, arg...);
  25. mutex.lock();
  26. }
  27. }
  28. template <typename Callable, typename...T>
  29. void VarList::forEachLock(Callable func, T...arg) {
  30. std::unique_lock<std::mutex> mutex{lock};
  31. for (auto &vs : varspace)
  32. func(vs, arg...);
  33. }
  34. }
  35. #endif //AFUN_VAR_TEMPLATE_H