我正试图做与往常相反的事情。我们有一个传统的WinCE应用程序,现在需要移植到Win32平台,以便它可以作为实际应用程序的模拟器。
我已经设法得到的代码编译和大多数的东西已经开始工作。但问题是,该应用程序是多线程的。当应用程序在WinCE上运行时,所有线程都是同步的,但是,在windows上,它们之间绝对没有同步。
应用程序在串行端口通信,但很长一段时间invalidate不工作。在其他时间,接收线程挂起。有时根本不发送数据。有时线程会一次又一次地多次发送数据。
你知道WinCE和Win32的多线程有什么区别吗?是什么导致了这种问题?
这个应用程序太大了,设计上的改变几乎是不可能的。对我该调查什么有什么建议吗?
我发现了问题,所有的线程都没有足够的时间来处理数据,这导致了大量的超时。我所要做的就是,在数据损坏的地方放一些锁,并将Sleep(0)
更改为Sleep(5)
。这将CPU使用率从95%降低到10%,并解决了所有问题。