Будет ли конфликт экспертов?

[Удален]  

Здравствуйте.

Несколько вопросов.

1. Возникнет ли конфликт, если два эксперта одновременно попытаются изменить глобальную переменную терминала?

GlobalVariableSet()

2. Возникнет ли конфликт, если два эксперта одновременно попытаются сделать запись в файл?

handle=FileOpen("FileName.CSV", FILE_CSV|FILE_READ|FILE_WRITE,';'); //Открываем файл
      FileSeek(handle, 0, SEEK_END);                             //Переходим на новую запись
      FileWrite(handle,A,B,C);                                      //Записываем
      FileClose(handle);                                            //Закрываем файл

3. Возникнет ли конфликт, если два эксперта одновременно попытаются создать файл (с использованием тех же операторов)?

Если конфликты возможны, есть ли способ их предотвратить или обнаружить и обработать?

Понятно, что вероятность таких совпадений очень мала, но очень не хочется неприятностей, если это все-же произойдет.

С уважением, Евгений

 
Конфликта не будет, а ошибку вернет GetLastError(). Если не хочется неприятностей - будьте к ним готовы.
 
l-evgene писал(а) >>

Если конфликты возможны, есть ли способ их предотвратить или обнаружить и обработать?

Создавайте переменные-флаги. В эту переменную записывается информация о том, что какой-то из экспертов выполняет потенциально конфликтную операцию. Прежде чем эксперт что-то сделает пусть сначала прочитает флаг и удостоверится, что другой эксперт в это время не выполняет конфликтную операцию.

[Удален]  
nen >>:

Создавайте переменные-флаги. В эту переменную записывается информация о том, что какой-то из экспертов выполняет потенциально конфликтную операцию. Прежде чем эксперт что-то сделает пусть сначала прочитает флаг и удостоверится, что другой эксперт в это время не выполняет конфликтную операцию.


Спасибо, что ответили.

О флагах я думал. При этом ничего не меняется. Если возможны конфликты, описанные выше, с тем же успехом два эксперта одновременно начнут менять значение флага. Мне кажется, будет еще хуже, т.к. заклинит обоих.

 
l-evgene >>:


Спасибо, что ответили.

О флагах я думал. При этом ничего не меняется. Если возможны конфликты, описанные выше, с тем же успехом два эксперта одновременно начнут менять значение флага. Мне кажется, будет еще хуже, т.к. заклинит обоих.

еще раз для тех кто в танке: перед выполнением потенциально конфликтной операции эксперт 1. считывает значение флага 2. если оно 0 (второй эксперт не выполняет операцию), то 3. устанавливает флаг=1 4. выполняет операцию 5. устанавливает флаг=0.

два эксперта одновременно флаг менять не смогут. если вы о промежутк времени между пунктами 1. и 2., то команда условного перехода выполняется за один такт процессора, так что второй эксперт вклиниться сюда просто физически не сможет.

 

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

Вот только незадача я точно помню что про это читал где-то тут на форуме и это было не больше нескольких месяцев назад, но где вспомнить не могу.

И вобще есть вероятность, что это реализовано в 5, а не в 4 и именно в этом ключе и сообщалось, но в любом случае в 5 это точно есть, а в 4-ке под вопросом

P.S. Перечитал! Да, бредовенький пост получился... 8-)).

[Удален]  
alsu >>:


два эксперта одновременно флаг менять не смогут. если вы о промежутк времени между пунктами 1. и 2., то команда условного перехода выполняется за один такт процессора, так что второй эксперт вклиниться сюда просто физически не сможет.

Yesss! Спасибо за решение. С тактами процессора у меня напряженка: не проходили мы этого:)