GCD里面函数的个人理解

来源:互联网 发布:詹姆斯和科比 知乎 编辑:程序博客网 时间:2024/04/29 17:18

1、void dispatch_async(dispatch_queue_t queue,dispatch_block_t block);这个函数会异步的把block这个块 提交到目标队列queue中执行。

2、void dispatch_sync(dispatch_queue_t queue,dispatch_block_t block);这个函数是同步的把block这个块 提交到目标队列queue中执行。

比如说在一个函数中,要执行一个很复杂的计算然后把计算结果显示到UI界面上,这时候就可以使用void dispatch_sync把计算这部分提交到dispatch_get_global_queue这个异步队列中进行,由于块中的内容不执行结束,dispatch_sync函数不会return,所以计算结束后会紧接着执行dispatch_sync下面的代码.看ios的API上解释“Submits a block to a dispatch queue like dispatch_async(), however dispatch_sync() will not return until the block has finished.

3、需要注意"Calls to dispatch_sync() targeting the current queue will result in dead-lock."就是说把块提交到当前队列的话会造成死锁.


原创粉丝点击