Скачать MetaTrader 5

Глобальные переменные и thread safety

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