gpt4 book ai didi

c# - 什么类型的错误会导致程序慢慢使用更多的处理器能力并突然达到 100%?

转载 作者:太空宇宙 更新时间:2023-11-03 19:35:45 27 4
gpt4 key购买 nike

我希望得到一些关于什么可能导致真正令人讨厌的错误的好主意。

这是一个通过套接字传输数据并接收返回消息的程序。我可以解释更多,但我认为这对这里没有帮助。

我只是在寻找可能导致以下行为的假设问题:

  • 程序运行
  • 处理器时间慢慢积累(直到大约 60%)
  • 突然间(可能是在 30 秒后,也可能是在 60 秒后)处理器时间猛增到 100%。程序完全停止
  • 在我的系统日志中,它总是在同一个线程中以内存分配(类似于:myArray = new byte[16384])的一行结束。

现在这是奇怪的部分:如果我在任何地方设置调试器...它会立即停止在该行上。所以只是设置断点的行为,使线程继续(它没有运行,因为我再也没有看到日志输出)

我在想“死锁”,但这不会导致 100% 的处理器能力。如果有的话,相反。此外,设置断点不会导致死锁结束。

关于哪种“构造”可能会导致这种效果,还有其他人的理论建议吗?(除了“糟糕的编程”);^)

谢谢

编辑:我刚刚注意到....通过将 sendspeed 设置得更慢,问题出现的时间比预期的要晚得多。我会考虑发送相同数量的数据包......但是在出现相同问题之前,这种方式发送的数据包数量不会高得多。

最佳答案

我只能猜测,但与死锁相反的是活锁。这意味着两个线程在无限循环中相互 react 。这也可能通过设置断点来中断,因为活锁通常取决于正确的时机。

除此之外,我曾经遇到过类似的非阻塞 Java nio 类问题,导致主线程忙于等待输入。虽然 CPU 使用率瞬间上升,但不是几秒后才上升。

也许如果您能提供更多信息,例如编程语言甚至代码示例,可能会有更多想法。

关于c# - 什么类型的错误会导致程序慢慢使用更多的处理器能力并突然达到 100%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693263/

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