Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2006-10-04 21:57:33 ЛС | профиль | цитата
Galkov, повторно вызвать можно - тут спору нет. Но вот пока отрабатывают use_globalVar_1 или use_globalVar_2 вызов из другого потока my_proc приведет к не верной работе программы. Проблема это не программиста, а наша - целиком и полностью причем. Вот такой код выполняется корректно всегда:
;
void my_proc(int tempVar) {
do_work(&tempVar);
}

do_work(int *globalVar) {
use_globalVar_1(globalVar);
use_globalVar_2(globalVar);
}

void use_globalVar_1(int *globalVar) {
//...
}

void use_globalVar_2(int *globalVar) {
//...
}
Не меняя кода самой программы, а меняя только интерфейс мы обеспечили разработчика 100% корректным кодом. Скажем примерно это же было бы достигнуто в hiasm, если бы self не запоменался в глобальном EvHandle, а передавался скажем последним звеном в MT потоке по любому ивенту или запросу данных. Что-то около того:
...
AddMTData(Data, integer(self));
_hi_onEvent(THIMultiElementEx(FParent).Events[Index],Data);
...
а раз такая возможность есть хоть в каком-то виде, то это уже наша задача.
карма: 27
0