Для моего проекта я читаю и записываю в файл из нескольких потоков, поэтому мне нужно реализовать блокировку файла. Я пробовал fcntl()
, однако кажется, что функция работает только с блокировкой между процессами, а не между потоками. Поэтому я ищу другое решение. Решение, которое я придумал (что, вероятно, не самое лучшее), состоит в том, чтобы в каждой записи в моем файле был байт, чтобы указать, заблокирована ли запись, и тогда я мог бы использовать цикл занятости для чтения и проверки байта. 1002 *
Итак, у меня два вопроса. Во-первых, каков наиболее эффективный способ блокировки файловых областей? Во-вторых, если я использую подход с занятым циклом, как я могу оптимизировать его с помощью центральной центральной диспетчеризации? Я думал, что смогу сделать так, чтобы все занятые циклы происходили в блоках, отправленных на dispatch_sync()
. Но я не знаю, будет ли это работать эффективно.
Спасибо.