Обычная ситуация, с которой я сталкивался в моем офисе, это то, что если мы не выполняем операцию ввода-вывода, мы немного подождем и попробуем еще раз пару раз, надеясь, что она вдруг начнет работать.
Пример того, о чем я говорю:
bool WriteAFile()
{
uint32_t writeAttempts = 0;
do
{
if (WriteFile(/*...*/))
{
break;
}
Sleep(50);
writeAttempts++;
} while (writeAttempts < 3);
return writeAttempts < 3;
}
Я предполагаю, что это поведение изначально появилось, чтобы предотвратить сбои при работе с файлами, которые временно заблокированы другим процессом … что имеет некоторый смысл … однако я не вижу, как это применимо к другим операциям.
Повышает ли повторение операций ввода-вывода таким образом ваши шансы на запись «хороших» данных на диск? Можно ли это использовать в качестве обходного пути для умирающих дисков? Существуют ли другие законные способы использования такого поведения?
PS: хотя я пометил это как пример C ++ для Windows, мне интересно узнать, есть ли веские причины сделать это и с другими языками / платформами!
по-прежнему…
Случайно, есть несколько причин, почему это может быть допустимо / желательно:
Одно можно сказать почти наверняка: такой механизм повтора не был запрограммирован случайно или случайно!
Я предлагаю выследить оригинального автора и спросить его / ее, почему он / она это сделал … может быть очень веская причина, или первоначальная причина может быть давно устарела.
Других решений пока нет …