Справочник MQL4
Глобальные переменные
GlobalVariableSetOnCondition
| bool GlobalVariableSetOnCondition( |
string name, double value, double check_value) |
Устанавливает новое значение существующей глобальной переменной, если текущее значение переменной
равно значению третьего параметра check_value. Если переменной не существует, функция сгенерирует ошибку ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) и вернет FALSE.
При успешном выполнении функция возвращает TRUE, иначе FALSE. Для того, чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Если текущее значение глобальной переменной отличается от check_value, функция вернет FALSE.
Функция обеспечивает атомарный доступ к глобальной переменной, поэтому она может быть использована
для организации семафора при взаимодействии нескольких одновременно работающих экспертов в пределах одного клиентского терминала.
Параметры:
| name |
- |
Имя глобальной переменной. |
| value |
- |
Новое значение. |
| check_value |
- |
Значение для проверки текущего значения глобальной переменной. |
Пример:
int init()
{
//---- создание глобальной переменной
GlobalVariableSet("DATAFILE_SEM",0);
//...
}
int start()
{
//---- перед использованием ресурса пытаемся его заблокировать
while(!IsStopped())
{
//---- блокируем
if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true) break;
//---- переменная удалена?
if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND) return(0);
//---- задержка исполнения в полсекунды
Sleep(500);
}
//---- ресурс заблокирован
// ... работа с файлом
//---- разблокируем ресурс
GlobalVariableSet("file_semaphore",0);
}
|
|
|