アプリケーションの要求に応答する必要がある dll を作成しています。アプリケーションの要件の 1 つは、呼び出しの完了に時間がかからないようにすることです。
たとえば、ホスト アプリケーションによって呼び出される関数 foo() があるとします。
int foo(arg){
// some code i need to execute, say,
LengthyRoutine();
return 0;
}
たとえば、foo は、確実に長い時間がかかるタスクを実行する (または関数を呼び出す) 必要があります。アプリケーションでは、待機変数を設定できます。foo が戻ったときにこの変数が 0 でない場合、wait が 0 を返すまで (各呼び出しの前に wait 変数をリセットして) 何度も foo を呼び出します。
これに対する最善のアプローチは何ですか?
行きますか:
int foo(arg){
if (inRoutine == TRUE) {
wait = 1;
return 0;
} else {
if (doRoutine == TRUE) {
LengthyRoutine();
return 0;
}
}
return 0;
}
これは、LengyRoutine が完了するまでに長い時間がかかるという問題を実際には解決しません。タスクが完了したかどうかに応じて inRoutine を更新するスレッドを生成する必要がありますか?
ありがとう..