Использование очередей операций с объединенной структурой - PullRequest
1 голос
/ 09 июля 2019

С появлением структуры комбайна возникает необходимость в использовании очередей операций.Например, яблоко использует очереди операций почти везде в приложении WWDC.Так что, если мы используем SwiftUI с объединением (асинхронное программирование), будет ли необходимость использовать Очереди операций?

1 Ответ

1 голос
/ 24 июля 2019

Объединение - это просто еще один асинхронный шаблон, но он не заменяет очереди операций (или очереди отправки). Так же, как GCD и рабочие очереди успешно сосуществуют в наших базах кода, так и с Combine.

  • GCD отлично подходит для простого в написании, но все же высокопроизводительного кода для отправки задач в различные очереди. Так что, если у вас есть что-то, что может блокировать основной поток, GCD действительно очень просто отправить это в фоновый поток, а затем отправить некоторый блок завершения обратно в основной поток. Он также обрабатывает таймеры в фоновых потоках, синхронизации данных, высокооптимизированный распараллеленный код и т. Д.

  • Очереди работы отлично подходят для задач более высокого уровня (особенно тех, которые сами по себе являются асинхронными). Вы можете взять эти части работы, обернуть их в отдельные объекты (для хорошего разделения обязанностей), и очереди операций управляют выполнением, отменой и ограниченным параллелизмом, довольно элегантно.

  • Объединяет сияние при написании краткого, декларативного, компонуемого, асинхронного кода обработки событий. Это превосходно при написании кода, который описывает, как, например, пользовательский интерфейс должен отражать какое-то событие (сетевая задача, уведомление, даже обновления пользовательского интерфейса).

Это явно упрощение, но это лишь некоторые из сильных сторон различных структур. И, безусловно, в этих трех рамках есть определенное совпадение, но у каждого есть свое место.

...