В приложении linux я использую каналы для передачи информации между потоками.
Идея использования труб заключается в том, что я могу подождать сразу несколько каналов, используя опрос (2). Это хорошо работает на практике, и мои потоки спать большую часть времени. Они только просыпаются, если есть что-то делать.
В пользовательском пространстве трубы выглядят так же, как два файла. Теперь я задаюсь вопросом, сколько ресурсов такие трубы используют на стороне ОС.
Btw: В моем приложении я только время от времени отправляю одиночные байты. Подумайте о моих трубах как о простых очередях сообщений, которые позволяют мне получать входящие потоки, сообщать им о передаче некоторых статусных данных или завершать.