3

Допустим, что я запускаю некоторый код в async отправки. .. есть ли способ завершить созданный поток до его завершения? например, когда пользователь нажимает на отменуПреждевременный выход из dispatch_asycn, Grand Central Dispatch

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    //start doing something here.. break bofore it finishes? 


    dispatch_async(dispatch_get_main_queue(), ^{ 

    //main thread stuff.. 

    }); 



}); 
+0

Возможный дубликат [Очереди отправки: как узнать, запущены ли они и как их остановить.] (Http://stackoverflow.com/questions/1550658/dispatch-queues-how-to-tell-if- theyre-running-and-how-to-stop-them) –

+0

oh жаль об этом. поэтому вкратце я должен просто использовать флаг. –

+1

Да, установите флаг, чтобы запросить отмену, и выполните операцию асинхронного сканирования, чтобы проверить статус отмены в определенных точках, где можно безопасно отменить (обязательно сделайте необходимую очистку). –

ответ

3

Давид прав. GCD не имеет встроенного метода отмены. Это зависит от клиента (вас).