いくつかのマルチスレッド作業のための練習として、Windows CE 5.0用の簡単なアプリケーションを作成しました。私は2秒後にプログラムがスレッド2からのダイアログボックスが表示されていることを期待していたWindows CEの単純なマルチスレッドアプリケーション - スレッドスケジューリング
LPTHREAD_START_ROUTINE myThreadFunc()
{
Sleep(3000);
MessageBox(NULL, _T("thread 1"), _T("thread 1"), MB_OK);
return 0;
}
LPTHREAD_START_ROUTINE myThreadFunc2()
{
Sleep(2000);
MessageBox(NULL, _T("thread 2"), _T("thread 2"), MB_OK);
return 0;
}
と:私は二回、スレッド作成するための機能を呼び出していますWinMain関数で :スレッドで実行さ
myThread = CreateThread(NULL, 0, myThreadFunc(), NULL, 0, NULL);
myThread2 = CreateThread(NULL, 0, myThreadFunc2(), NULL, 0, NULL);
と機能は次のようになります次の1秒後にスレッド1のダイアログボックスが表示されます。しかし、実際にこのプログラムを実行しているときは、最初のダイアログボックスでスレッド1から2秒後にスレッド2から次の3秒後にダイアログボックスに表示されます。このトレッドは、私が期待していたように連続して走っているのではなく、同時に走っているようです。誰も私にこの行動を説明できますか?
私は、Windows CE 5.0用のWindows CE用の組み込みVisual C++とエミュレータを使用しています。
ありがとうございます。
が、他のスレッドを生成、あなたのメインスレッドが実行されても覚えている:
私は入力する必要があります。おそらく、両方のスレッドがメインスレッドによって設定した開始イベントで待機し、結果がより予測可能かどうかを確認してください。 – Damon8or
これをデバッグ出力またはコンソールにダンプすると(つまり、GWESウィンドウシステム経由で送信しないと、実際には、すべてのUIアクセスがポンプスレッド上で行われるのが本当に好きです)、何が表示されますか? – ctacke