我正在尝试做与平常相反的事情。我们有一个遗留的 WinCE 应用程序,现在需要将其移植到 Win32 平台,以便它可以作为实际应用程序的模拟器工作。
我已经成功地编译了代码,并且大多数东西都开始工作了。但问题是,该应用程序是大量多线程的。当应用程序在 WinCE 上时,所有线程都同步工作,但是,在 Windows 上,它们之间绝对没有同步。
该应用程序在串行端口上进行通信,但长时间无效无效。其他时候,接收线程挂掉。有时根本不发送数据。有时线程一遍又一遍地多次发送数据。
知道 WinCE 和 Win32 中的多线程有什么区别吗?是什么导致了此类问题?
该应用程序非常庞大,几乎不可能更改设计。关于我应该研究什么有什么建议吗?
最佳答案
我发现了问题,所有线程都没有足够的时间来处理数据,这导致了大量的超时。我所要做的就是,在数据被破坏的地方放上一些锁,并将 Sleep(0)
更改为 Sleep(5)
。
这将 CPU 使用率从 95% 降低到仅 10%,并消除了所有问题。
关于c - 将多线程window ce app移植到win32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872001/