я реализовал «безопасный сохранить» операции, которая идет что-то вроде этого:гонки условие при вызове FSDeleteObject
- Сохранить некоторые данные временного файла
A
- Копировать содержимое
A
до конечного пункта назначенияB
- Удалить
A
У меня состояние гонки на шаге 3, где Mac OS X будет иногда возвращаться с ошибкой -4 7 (fBsyErr
) при попытке удалить файл с помощью FSDeleteObject
. Я абсолютно уверен, что я единственный, кто модифицирует этот файл, и подозреваю, что ОС делает что-то (например, задачи кэширования фона) в то время, когда я пытаюсь удалить файл, что приводит к ошибке.
Это прерывистая проблема: обычно вызов FSDeleteObject
работает нормально. В тех случаях, когда я возвращаю код ошибки, я хотел бы безопасно удалить файл «в более поздний момент времени», когда ОС закончит играть с ним.
Что было бы лучшим способом предпринять, пытаясь удалить этот неприятный временный файл?