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