У меня многопоточное приложение, которое порождает потоки для нескольких аппаратных инструментов. Каждый поток в основном представляет собой бесконечный цикл (для времени жизни приложения), который опросает оборудование для новых данных и активирует событие (которое передает данные) каждый раз, когда он собирает что-то новое. Существует один класс слушателя, который объединяет все эти инструменты, выполняет некоторые вычисления и запускает новое событие с этим вычислением.
Однако мне интересно, если, так как есть один прослушиватель, было бы лучше разобрать метод IEnumerable<>
на этих инструментах и использовать yield return
для возврата данных вместо запуска событий.
Я хотел бы узнать, знает ли кто-нибудь о различиях в этих двух методах. В частности, я ищу лучшую надежность, лучшую способность приостанавливать/отменять операцию, лучше всего использовать потоки, общую безопасность и т.д.
Кроме того, во втором методе можно еще запустить цикл IEnumerable
в отдельном потоке? Многие из этих инструментов привязаны к процессору, поэтому обеспечение каждого из них связано с другим потоком.