1

いつもと逆のことをしようとしています。実際のアプリのシミュレーターとして機能できるように、Win32 プラットフォームに移植する必要がある従来の WinCE アプリがあります。

コードをコンパイルすることができ、ほとんどのことが機能し始めました。しかし、問題は、アプリが高度にマルチスレッド化されていることです。アプリが WinCE 上にあるときはすべてのスレッドが同期して動作しましたが、Windows ではそれらの間でまったく同期がありません。

アプリはシリアル ポートで通信していましたが、長い間無効化が機能しません。それ以外の場合は、受信スレッドがハングアップします。場合によっては、データがまったく送信されないことがあります。スレッドが何度も何度もデータを送信することがあります。

WinCE と Win32 のマルチスレッドの違いは何ですか? この種の問題の原因は何ですか?

アプリは非常に大きいため、デザインの変更はほぼ不可能です。私が何を調べるべきかについて何かアドバイスはありますか?

4

1 に答える 1

1

問題が見つかりました。すべてのスレッドがデータを処理するのに十分な時間を取得できず、大量のタイムアウトが発生しました。私がしなければならなかったのは、データが破損している場所にいくつかのロックを置き、に変更Sleep(0)することだけでしたSleep(5). これにより、CPU 使用率が 95% からかろうじて 10% に減少し、すべての問題が解消されました。

于 2013-04-09T11:25:21.000 に答える