gpt4 book ai didi

c - 多线程 C 代码在编译器优化下会崩溃,如果没有编译器优化,则可以完美运行,这是预期会发生的情况,还是肯定是一个错误?

转载 作者:行者123 更新时间:2023-11-30 15:57:49 26 4
gpt4 key购买 nike

我有一个网络程序,其中涉及多个交互线程和一个用于重叠网络 I/O 的线程池。我正在使用 MinGW 进行编译,它是 Windows 的 gcc。

在没有编译器优化的情况下,它可以在多台不同的机器上 100% 正常工作,但是当我打开优化时,它就会崩溃。

这种情况是否应该发生,或者这是否揭示了我需要修复的错误?

最佳答案

最可能的解释是它揭示了您需要修复的错误。这很可能是线程中的竞争条件,但也可能是别名冲突。

一个可以帮助您定位问题的技巧,尤其是在您轻松复制问题的情况下,是进行二分搜索来查找受影响的文件。基本上,编译一半经过优化的文件,一半不经过优化的文件。查看代码是否有效或崩溃。这会将问题定位到一半的代码。重复此过程,缩小有问题的文件范围,直到将其本地化为文件。如果需要,将该文件分成两部分,并将代码从一个文件移动到另一个文件,以找出优化时失败的代码块,而不是未优化时失败的代码块。

关于c - 多线程 C 代码在编译器优化下会崩溃,如果没有编译器优化,则可以完美运行,这是预期会发生的情况,还是肯定是一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com