如果应用程序终止,在GCD Dispatch Queue上运行的Block会发生什么?

时间:2012-02-06 19:07:01

标签: macos grand-central-dispatch

当用户退出应用程序时,如果某个块在后台队列上异步执行会发生什么?它会被终止吗?我需要在–applicationWillTerminate:处理吗?

我不是在谈论长时间运行的任务......只是想知道在做任何可能导致异步状态不一致的事情时是否存在固有的危险?

1 个答案:

答案 0 :(得分:2)

当应用程序退出时,所有线程(创建或不创建GCD)都会终止,所以是的,如果尚未运行,则该块将不会运行(永远)。如果正在完成的工作需要在应用程序可以安全退出之前完成,那么您可以在-applicationWillTerminate中等待,但由于您的应用程序也可能被用户强行退出,因此设置方式确实不是一个好主意。 -applicationWillTerminate可能永远不会运行。