我有一个包含多个工作线程的C应用程序。这些线程不可阻塞,所以当工作线程需要写入磁盘文件时,我让它们将其写入内存中的循环缓冲区,然后再有专门的线程将该缓冲区中的内容写入磁盘。
工作线程现在不会再阻塞。专门的线程可以安全地阻塞,而不会影响工作线程(它在写入磁盘时不会持有锁)。我的内存缓冲区被调整得足够大,以便写入线程可以跟上。
这一切都运转得很好。我的问题是,如何为stdout实现类似的功能?
我可以编写一个宏printf(),使其写入内存缓冲区,但我无法控制所有可能写入stdout的代码(其中一些位于第三方库中)。
你有想法吗? NickB