提问人:ZengYiFei 提问时间:11/1/2023 更新时间:11/1/2023 访问量:20
g++ 优化级别如何影响多线程程序中的 printf()?
How the g++ optimization level affects the printf() in Multi-threaded programs?
问:
我在多线程 Web 服务器程序中遇到了 printf() 行为的困难。
当我设置优化级别 = “-O0”时,defaule 级别。Printf() 在新线程中总是不起作用(至少我在我的终端中看不到输出)。但在主线程中,它运行良好;
但是,如果我设置优化级别 = “-O1” 或 “-O2”。Printf() 在所有线程中都按我预期的方式工作,它们在线程切换时打印一些信息。
是否有一些潜在的秘密?
代码在这里:https://github.com/liwook/CPPServer/tree/main/code/server_v12。 您可以将 Makefile 的第 71 行更改为“CPPFLAGS += -fno-strict-aliasing”以查看差异。
另外,我尝试了一些方法,例如 set noblocking、fflush(stdout) 和 read() 替换 printf()。在我设置优化级别之前,这些方法不起作用。
答: 暂无答案
评论
-O0