... господа программисты, а кто-нить когда-нить писал свои потоки передачи данных (те, что streams, а не threads)?
Представим задачу следующего толка: есть m источников данных (веб-камера, поток из файла, модем или еще какая дребедень), n приемников (например, экран вывода, устройство передачи данных, клиент в сети и т.п.). Требуется организовать передачу данных между источниками и приемниками вида "много"-"много", причем с некоторым преобразованием данных внутри.
Вариант 1, стандартный: создаем классы-преобразователи, которые некоторым образом преобразовывают данные и работают в жесткой цепочке, четко зная, кому надо что передать. Минусы варианта очевидны: нет гибкости в передаче, а иной раз реализация может превратиться в жуткий кошмар (у меня есть пример проекта, где сначала строится жесткая цепочка из таких классов путем передачи callback-ов, по которым затем передаются данные на обработку), да и в случае многопотокового приложения синхронизация этого дела представляет отдельный кошмар. Плюс - подход далеко не новый и довольно хорошо известный.
Вариант 2, вчера придуманный: Весь процесс передачи информации вместе с преобразованием данных можно представить как поток от источника до приемника. Особенно это актуально для случая, когда источники и приемники работают в разных нитях (threads). Процесс передачи данных можно реализовать стандартным потоком (через pipe), внутри которого, кроме всего прочего, можно сделать применение некоторой операции преобразования. Это решает еще и часть задачи синхронизации данных: поток является кольцевым буфером, запрещающим перезапись данных (записанные данные _должны_ быть прочитаны, чтобы освободить буфер). Надо бы подумать над этим вопросом...
UPD: Вариант с пайпами, кстати, еще и легче реализуется как кроссплатформенный, ибо pipe это POSIX и сидит в std, а совсем не "M$-specific".
PS: Да, что-то с утра голова не оч хорошо работает... гудит немного и болит чуток :/