Я хочу сделать аналог
std::mutex, но немного с другим функционалом.
Суть заключается в том, что функтор-владелец может вызовом оператора инкрементировать и декрементировать атомарный size_t (начал исполнение - увеличил, заканчиваешь - уменьшил), а сторонние функции могли работать только когда значение (допустим) =0. Для атомарных чисел есть wait функция, которая заставляет ждать поток, пока не вызван notify. Проблема wait в том, что оно будет ждать только (допустим) при 0, а мне нужно ждать в диапазоне
[1;-1]. Как такое можно реализовать?
Я пробовал делать так:
while(my_atomic_int.load() != 0) my_atomic_int.wait(my_atomic_int.load());
Но я так понимаю - оно не потокобезопасно из-за цикла и != 0.