Я делаю DLL, которая должна отвечать на запросы приложения. Одним из требований приложения является то, что вызов не должен занимать много времени для завершения.
Скажем, у меня есть функция foo (), которая вызывается хост-приложением:
int foo(arg){
// some code i need to execute, say,
LengthyRoutine();
return 0;
}
Допустим, foo должен выполнить задачу (или вызвать функцию), которая наверняка займет много времени. Приложение позволяет мне установить переменную ожидания; если эта переменная отлична от нуля при возврате foo, она снова и снова вызывает foo (сбрасывает переменную ожидания перед каждым вызовом), пока не будет возвращено wait 0.
Какой лучший подход к этому?
Должен ли я идти:
int foo(arg){
if (inRoutine == TRUE) {
wait = 1;
return 0;
} else {
if (doRoutine == TRUE) {
LengthyRoutine();
return 0;
}
}
return 0;
}
Это на самом деле не решает проблему, которую для LengthyRoutine потребуется много времени. Должен ли я создавать какой-то поток, который обновляет inRoutine в зависимости от того, завершил ли он свою задачу?
Спасибо ..