实时优先级中的一个线程会冻结 Windows 7。

发布于 2024-11-27 04:53:44 字数 254 浏览 1 评论 0原文

我刚刚从WinXP转到Win7。 我的软件需要对 I/O 做出实时响应,因此它会在一个线程中进行忙等待(该线程与在一个 CPU 上运行具有关联性)。

结果是其中一个核心的 CPU 利用率为 100%,其他核心的 CPU 利用率为 0%,在 Winows XP 上运行得很好。 在 Windows 7 中,系统会冻结。 (该软件是一个控制台应用程序,对于 Windows 应用程序,它的行为有点不同。只有当主线程忙等待而不查看消息时,它才会冻结)

有什么想法吗?

I just moved from WinXP to Win7.
My software needs to have real time response to I/O so it makes a busy-wait in one thread (which has affinity to run on one CPU).

The result is 100% CPU on one of the cores and 0% CPU for others, on Winows XP it worked just fine.
In Windows 7 the system freezes. (The software is a console application, for Windows application it behaves a bit different. only if the main thread make busy-wait without peeking messages it freezes)

Any ideas ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巡山小妖精 2024-12-04 04:53:44

因此,您正在使用非实时操作系统来进行实时 I/O。简而言之,代码无法正常工作,应该执行非忙等待(更改为睡眠等待)循环,并将线程计时器设置更改为足够实时的设置。

请参阅此问题以在计时器回调上设置毫秒精度的窗口。

如何触发C# 函数在某个时间以毫秒为精度?

So you're using a non real-time OS for realtime I/O. Simply put the code isn't working correctly and should do a non busy-wait (change to a sleep-wait) loop and change the thread timer settings to something that is realtime enough.

See this question to setup windows for millisecond precision on a timer callback.

How to trigger a C# function at a certain time with millisecond precision?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文