У меня есть приложение C со многими рабочими потоками. Важно, чтобы они не блокировались, поэтому, когда рабочим потокам нужно записать файл на диск, я записал их в кольцевой буфер в памяти, а затем выделил поток для записи этого буфера на диск.
Рабочие потоки больше не блокируются. Выделенный поток может безопасно блокировать во время записи на диск, не затрагивая рабочие потоки (он не удерживает блокировку во время записи на диск). Мой буфер памяти настроен так, чтобы он был достаточно большим, чтобы поток писателя мог его поддерживать.
Все это прекрасно работает. У меня вопрос, как мне реализовать нечто подобное для stdout?
Я мог бы использовать макрос printf () для записи в буфер памяти, но у меня нет контроля над всем кодом, который может записываться в стандартный вывод (часть из них находится в сторонних библиотеках).
Мысли?
NickB