Однажды я написал утилиту генерации ввода-вывода в текстовом режиме, в которой один поток отвечал за обновление пользовательского интерфейса и несколько рабочих потоков для выполнения реальной работы ввода-вывода. Когда рабочий поток завершил ввод-вывод, он отправил сообщение обновления в поток пользовательского интерфейса. Я реализовал эту систему сообщений, используя очередь сообщений POSIX.
Зачем реализовывать это так? В то время это звучало как хорошая идея, и мне было интересно, как они работают. Я решил, что смогу решить проблему и научиться чему-то одновременно. Было много разных техник, которые я мог бы использовать, и я не думаю, что была какая-то глубокая причина, почему я выбрал эту технику. Я не осознавал этого позже, но я был рад, что использовал очередь POSIX, когда мне пришлось портировать утилиту на другую систему (она также была POSIX-совместимой, поэтому мне не пришлось беспокоиться о переносе внешних библиотек, чтобы получить приложение для запуска).