В своем коде я использую цикл for для отправки параллельных задач в глобальную очередь отправки, например:
for collectionMember in myCollection {
DispatchQueue.global(qos: .default).async {
// do stuff here with collectionMember and store in variable "result"
DispatchQueue.main.async {
// code using variable "result" that must be executed serially on main thread
// because accesses shared resources
}
}
Я новичок во всем, что касается Grand Central Dispatch, и я беспокоюсьчто, когда разные параллельные потоки пытаются планировать блоки в главном DispatchQueue, будут некоторые проблемы с памятью, поскольку они оба обращаются к главному DispatchQueue.
Я хочу, чтобы параллельные потоки добавили блок восновное DispatchQueue по их завершению, без проблем с безопасностью потоков.
Нужно ли использовать блокировку вокруг блока, куда я отправляю код в главное DispatchQueue, или планирование потока блоков безопасно?
Наконец, если у меня есть какие-либо ошибки или есть более простой способ решить эту проблему, дайте мне знать. Спасибо!