2013-04-08 74 views
1

我试图做与平时相反的操作。我们有一个传统的WinCE应用程序,现在需要移植到Win32平台,以便它可以用作实际应用程序的模拟器。将多线程窗口ce应用程序移植到win32

我已经设法让代码编译并且大部分的东西已经开始工作。但问题是,该应用程序是多线程的。当应用程序在WinCE上时,所有线程都同步工作,但在Windows上,它们之间完全没有同步。

该应用程序正在串行端口进行通信,但很长一段时间invalidate不起作用。在其他时间,接收线程挂起。有时数据根本没有发送。有时线程会一遍又一遍地多次发送数据。

任何想法在WinCE和Win32多线程之间有什么区别?什么可能导致这种问题?

该应用程序如此之大以至于设计更改几乎不可能。任何我应该看看的建议?

+2

可能是Win32公开了在CE上没有检测到的程序中的线程错误,因为在平均困倦的PC上运行的上下文切换和后台进程数量如此之多。它也可能是一些不同的API函数。但没有显示任何实际的代码,我认为任何人都不能回答这个问题。 – Lundin 2013-04-08 06:21:06

+0

我同意Lundin。 PC只是在原始代码中发现了同步修正错误。确保你正在同步资源访问与关键部分等,并且问题可能会消失。 – ctacke 2013-04-08 13:11:15

回答

1

我发现这个问题,所有的线程都没有足够的时间来处理数据,这导致了大量的超时。我所要做的只是在数据被破坏的地方放一些锁,并将Sleep(0)更改为Sleep(5)。 这减少了95%的CPU使用率,几乎只有10%,并摆脱了所有问题。