Я начал контролировать очереди в первый раз и чувствую, что у меня есть хорошая ручка о том, как использовать их и прикосновение к Apple, чтобы сделать их довольно простыми в использовании.
Однако я столкнулся с проблемой чтения и записи нескольких потоков на одни и те же объекты. В этом вопросе я получил этот прекрасный ответ, и он оставляет меня с просьбой дать какое-то подтверждение от всех, чтобы убедиться Я понимаю плюсы и минусы @synchronized
vs GCD dispatch_barrier_async
.
Вот так я вижу:
@synchronized
PRO. Вы можете обернуть любой объект в @synchronized
до тех пор, пока у вас есть доступ/указатель на него, что упрощает безопасное обращение к моделям общих данных с разных объектов в программе
PRO: поддерживается iOS 4 (и, возможно, раньше)
`dispatch_barrier_async` with custom DISPATCH_QUEUE_CONCURRENT
PRO: быстрее, чем @synchronized
CON: DISPATCH_QUEUE_CONCURRENT доступен только в iOS 5 (как обсуждалось здесь), поэтому недоступно для поддержки iOS 4
CON: не так просто использовать при управлении чтением/записью объекта из многих других объектов, поскольку очереди наиболее легко доступны только для объекта, который их создает (без какой-либо работы это ограничение)
В общем, лучший инструмент зависит от потребностей программы, учитывая вышеизложенное.
Если у кого-то есть что добавить или указать, я был бы признателен.