Windows MFCの同時実行性で、特定の状態が達成されるまで待機するように現在のスレッドに指示するにはどうすればよいですか?現時点で私が考えることができる唯一の方法は、定期的なスリープを実行して状態を確認することです。意図した状態になったら、続行します。これを行うためのより良い方法はありますか?
BOOL achieved = FALSE;
int main (int argc, char** argv) {
// This function creates a new thread and modifies the 'achieved' global variable at some point in the future
doSomethingOnAnotherThread();
// Wait maximum 4 seconds for 'achieved' to be TRUE, otherwise give up
for(int i=0; i<5; i++) {
EnterCriticalSection(&CS);
int localAchieved = achieved;
LeaveCriticalSection(&CS);
if (!localAchieved) {
if(i==4) {
cout << "waited too long .. giving up" << endl;
break;
}
Sleep(1000); // let's wait 1 more second and see what happen
} else {
cout << "achieved is TRUE, resuming main thread" << endl;
break;
}
}
}