неясно, что вы спрашиваете, поэтому я думаю, что ваше сообщение будет закрыто.
тем не менее, я думаю, что единственный потокобезопасный способ реализации автоматического выключателя - это иметь мьютекс вокруг всех операций с данными, что приведет к последовательному потоку, так что это в основном бесполезно.
в противном случае вы будете иметь условия гонки, такие как
- Запускается thread-a (сервер не отвечает сразу из-за проблем с сетью)
- Запускается thread-b (через 10 секунд)
- thread-b завершает все исправления
- thread-a прерывает работу из-за тайм-аута -> размыкает цепь с устаревшими данными
версия, упомянутая в мартин Фаулерахblog - это автоматический выключатель в сочетании с пулом потоков: https://martinfowler.com/bliki/CircuitBreaker.html