实时优先级中的一个线程会冻结 Windows 7。
我刚刚从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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因此,您正在使用非实时操作系统来进行实时 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?