state а можно через Message Passing (crossbeam-channels). Вопрос как в схеме которую опишу ниже можно избавиться от shared state atomic flag.
* Есть Н воркеров которые сами по себе генерируют случайные данные и кладут их в канал
* Есть один консумер которые читает канал
* Воркеры и консумер общаются данными через канал, но еще есть атомик бул который говорит всем потокам выйти из бесконечного цикла
Теперь какое условие выхода
1. Консумер знает сколько он должен получить транзакций и он просто сравнивает сколько получил и сколько нужно и если достигнуто то он выставляет атомик бул флаг в Тру
2. Консумер так же периодически (по таймеру) просыпается и проверяет прогресс -- если прогресса нет 10 секунд то он ставит тотже флаг в Тру
Код этой схемы тут https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=76a819ab4a2da75271fe17eaf7fa734d
Если дропнуть receiver?
Обсуждают сегодня