Приложение для Mac OSX имеет фоновый процесс, который использует Core Graphics для рисования 2D линий и областей в CGLayer
. Затем это время периодически отображается пользователю через метод displayRect()
подкласса NSView
.Нужно ли сериализовать доступ для чтения/записи к CGLayer в OSX?
В настоящее время я использую очередь GCD для сериализации задач, которые читаются и записываются на уровень. Это гарантирует, что фоновый процесс никогда не будет рисовать на нем, в то же время основной поток рисует его в виде с использованием CGContextDrawLayerAtPoint()
. Однако, это стоило мне некоторой производительности.
Вопрос 1: Является ли сериализация R/W доступа к CGLayer
необходимым для стабильности приложения? (Я не против странного неправильно отображаемого изображения, но я не хочу рисковать крахом).
Вопрос 2: Если бы я должен был разделить задачу рисования на несколько параллельных процессов, было бы безопасно разрешить им все писать на слой в одно и то же время или мне нужно будет их сериализовать (что сделало бы параллельный вид бессмысленно)?