В настоящее время я пишу несколько файлов на диск в фоновом потоке, просто позвонив
dispatch_async(my_queue,^{
[self writeToRoot:filename data:data];
};
- (BOOL)writeToRoot:(NSString *)path data:(NSData *)content
{
NSString *fullPath = [[self rootPath] stringByAppendingPathComponent:path];
NSString *pathWithoutFile = [fullPath stringByDeletingLastPathComponent];
BOOL directoryExists = [[NSFileManager defaultManager] fileExistsAtPath:pathWithoutFile];
if (!directoryExists) {
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:pathWithoutFile
withIntermediateDirectories:YES
attributes:nil error:&error];
NSParameterAssert(error == nil);
}
return [content writeToFile:fullPath atomically:NO];
}
Я делаю это так, чтобы он не блокировал основной поток. Мой вопрос - как обеспечить безопасность потоков. в то время как эта фоновая операция выполняется, что происходит, когда я пытаюсь читать с диска файл, вызывая:
[NSData dataWithContentsOfFile:fullPath];
Будет ли контент поврежден? ИЛИ будет ли операция записи блокировать файл, и операция чтения будет ждать завершения записи?