首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多线程程序中序列化err.h调用

在多线程程序中序列化err.h调用
EN

Stack Overflow用户
提问于 2022-04-25 18:59:27
回答 1查看 32关注 0票数 1

我的程序使用<err.h>函数(如warnx(3))来发出诊断信息。有时,多个线程同时执行报告,导致输出行重叠。

这不是什么大事,但如果有一个简单的解决办法,我想实现它.在那里吗?

(线程全部由OpenMP管理。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-26 16:43:58

避免交错打印警告的最简单的解决方案是使用OpenMP关键部分。要做到这一点,可以在包装函数中使用指令#pragma omp critical替换warnx调用。

注意,stdio/stderr访问应该已经被锁定,尽管如此,关于对其所做的操作类型,锁并不保证以您想要的方式切割行或行块。例如,如果您对warnx进行多次调用,但如果warnx的实现使用对fprintf的多个调用(正如您在注释中指出的那样),则尤其如此。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72004467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档