Глобальные переменные и thread safety
глобальные переменные у нас защищены синхронизирующим объектом ядра. если Вы хотите из глобальной переменной устроить семафор, то пользуйтесь функцией GlobalVariableSetOnCondition. о применении этой функции посмотрите большой тред "ошибка номер 6"
Нужна возможность защищать глобальные переменные мутексом, раз уж они шарятся между разными потоками экспертов.
Например, счетчик не будет работать:
int init() { if (GlobalVariableCheck("Experts")) { double dnum = GlobalVariableGet("Experts"); dnum += 1.; GlobalVariableSet("Experts", dnum); } ... }Надо бы что-нибудь типа
int init() { if (GlobalVariableCheck("Experts")) { double dnum; GlobalVariableLock("Experts"); dnum = GlobalVariableGet("Experts"); dnum += 1.; GlobalVariableSet("Experts", dnum); GlobalVariableUnlock("Experts"); } ... }