Разница между диспетчерской очередью и NSOperationQueue
Я очень новичок в GCD и потоковании. Я прошел через учебники и получил очень путаницу.
Может ли кто-то объяснить простыми словами. Пожалуйста, не предлагайте ссылки для разработчиков Apple.
Спасибо заранее!
Ответы
Ответ 1
NSOperationQueue может быть более подходящим для длительных операций, которые могут потребоваться отменить или иметь сложные зависимости. Очереди отправки GCD лучше для коротких задач, которые должны иметь минимальную производительность и накладные расходы памяти.
Можно отменить операции, которые были помещены в NSOperationQueue (насколько это поддерживается операциями). Когда вы кладете в очередь блок в очереди отправки GCD, он определенно будет выполнен в какой-то момент.
проверьте приведенную ниже ссылку, это может быть полезно для вас.
Операция Queue vs Dispatch Queue для приложения iOS
Ответ 2
GCD
является более низким, чем NSOperationQueue
, его основным преимуществом является то, что его реализация очень легкая и ориентирована на блокирующие алгоритмы и производительность.
В общем, вы должны использовать самый высокий уровень абстракции, который соответствует вашим потребностям. Это означает, что вы обычно должны использовать NSOperationQueue
вместо GCD
. NSOperationQueue
дает вам намного больше контроля над тем, как выполняются ваши операции.
Ответ 3
Операции предоставляют нам больший контроль над задачей, так как мы можем отменить определенную операцию, когда захотим, или все операции одновременно. Но это то же самое не может быть сделано с помощью очереди отправки.
Дальнейшие диспетчерские Очереди работают над концепцией FIFO и где, как операции нет.
Для Операции мы можем расставить приоритеты для задачи и контролировать их, например, какую задачу нужно выполнить первой, а какую - в конце, определив их приоритет.
Это делается путем установки свойства с именем queuePriority очень низким, низким, нормальным, высоким, очень высоким. многие другие подобные вещи могут быть выполнены с помощью операций, а не с помощью очередей отправки.
С помощью операций мы не можем делать вещи последовательно, так как они параллельны по умолчанию, но этого также можно добиться, добавляя зависимости операций друг от друга, как операция 2 зависит от операции 1, а операция 3 зависит от операции 2. Следовательно, делая это, они будет выполнять поочередно.