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