Хотел узнать, кто-нибудь сталкивался на практике с реализацией потоковой архитектуры обработки данных в приложении? Сразу оговорюсь, что в моем понимании есть потоковая архитектура. Несколько процессов, связь между которыми осуществляется через очереди, например, блокирующие. Нет данных - поток ждет. Есть - обрабатывает и передает дальше согласно результатам обработки. В теории все выглядит очень привлекательно, архитектура вполне соответствует логике приложения, которое необходимо разработать. Но так как нет практического опыта в реализации, слабых и сильных сторон я сам не знаю, что сдерживает начало работы. Неприятно ведь написать что-то, а потом увидеть, что время было потрачено зря:)

Не уверен что в тему :)
Не уверен что в тему, я когда-то все делал потоками - даже функции выделял в отдельные процессы, так вот там действительно все идеально просто и удобно, но до тех пор пока данные передаются только в одном направлении.
А если вдруг надо передавать обратно передающему поток процессу чего-то сложнее кода возврата, начинается настоящий геморрой, с гонками, тупиковыми состояниями, с семафорами и тп.
Правда ИМХО неплохая альтернатива автоматное программирование (процесс или объект = конечный автомат состояний, а связь между объектами осуществляется "почтовым" объектом; или даже просто сообщения передаются через простейшие очереди и в цикле, по очереди, каждый автомат создается, считывает прошлое состояние, и запускается, чтобы обработать только одно сообщение, сохраняет состояние, может чего-то передать другому автомату и умирает - в таком случае не может быть никаких гонок и тупиков, потому что это фактически и есть потоковая архитектура), но ИМХО сколько-нибудь сложные автоматы отлаживать не проще чем обычные объекты, и плюс у автомата написанного вручную уж очень получается большая избыточность кода и в этом коде не всегда просто разобраться.