Руководство по программированию для параллелизма от Apple - приятное чтение. Параллельное программирование - это не то, что вы, возможно, захотите узнать, скопировав пример кода из Интернета и взломав его, пока вы не будете счастливы. Хорошо знать варианты и принципы, чтобы уберечь себя от неприятностей.
Пересматривая ответ через некоторое время, в настоящее время вы почти не ошибетесь с помощью Grand Central Dispatch. Запуск задачи в фоновом режиме выглядит следующим образом:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self doSomeLongTask]; // 1
dispatch_async(dispatch_get_main_queue(), ^{
[self longTaskDidFinish]; // 2
});
});
Длинное задание (1) будет запущено в некотором фоновом потоке, и я не знаю ни одного улова, т.е. в этом потоке уже есть пул автоматического выпуска, вам не нужно заботиться о циклах выполнения и т. д. После завершения задачи код вызывает -longTaskDidFinish
в основном потоке (2), чтобы вы могли обновить пользовательский интерфейс или что-то еще. Это часто используемая идиома.