我的程序使用<err.h>函数(如warnx(3))来发出诊断信息。有时,多个线程同时执行报告,导致输出行重叠。
这不是什么大事,但如果有一个简单的解决办法,我想实现它.在那里吗?
(线程全部由OpenMP管理。)
发布于 2022-04-26 16:43:58
避免交错打印警告的最简单的解决方案是使用OpenMP关键部分。要做到这一点,可以在包装函数中使用指令#pragma omp critical替换warnx调用。
注意,stdio/stderr访问应该已经被锁定,尽管如此,关于对其所做的操作类型,锁并不保证以您想要的方式切割行或行块。例如,如果您对warnx进行多次调用,但如果warnx的实现使用对fprintf的多个调用(正如您在注释中指出的那样),则尤其如此。
https://stackoverflow.com/questions/72004467
复制相似问题