Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересуют возможности MetaTrader 5? Загляни и узнай!
Forex Trader
114237
Forex Trader 2005.09.12 21:44 
Global variables aren't thread safe. (Пардон, не припомню русского термина).

Нужна возможность защищать глобальные переменные мутексом, раз уж они шарятся между разными потоками экспертов.

Например, счетчик не будет работать:
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");
    }
    ...
}
Forex Trader
114237
Forex Trader 2005.09.13 11:23  
глобальные переменные у нас защищены синхронизирующим объектом ядра. если Вы хотите из глобальной переменной устроить семафор, то пользуйтесь функцией GlobalVariableSetOnCondition. о применении этой функции посмотрите большой тред "ошибка номер 6"
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий