блоки и нити - PullRequest
       44

блоки и нити

4 голосов
/ 02 декабря 2010

Я хочу знать, выполняются ли блоки в с / какао отдельным потоком к основному потоку. Будут ли они полезны для выполнения вычислительно дорогого кода, оставляя интерфейс отзывчивым?

Ответы [ 3 ]

13 голосов
/ 02 декабря 2010

Блоки - это просто фрагменты кода, связанного в вызываемый объект.То, как они выполняются, полностью зависит от кода, который его вызывает.

Запуск блоков в отдельном потоке не только возможен, но и является той причиной, по которой было введено понятие блоков.Он существует для поддержки Grand Central Dispatch, которая скрывает большую часть сложности параллельного программирования за моделью, ориентированной на задачи.

1 голос
/ 02 декабря 2010

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

1 голос
/ 02 декабря 2010

Они не должны запускаться в другом потоке, но могут. Вы можете запланировать их в очередях NSOperationQueues или GCD, и эти очереди могут быть очищены фоновыми потоками.

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

...