简述:
说道线程,离不开并行和串行,所谓并行,就是100赛跑,每个赛道就是一个线程,每个线程之间互不影响,同时都可以运行事件,就是10个赛道都可以有运动员跑步了,谁跑的慢或者跑的快,都不影响其他的人。串行就不一样了,串行是1个赛道10个运动员再跑接力赛,第一个跑到终点第二个在接着跑,依次类推,前边的不走,后边的也走不了的,所以串行上面的事件是一个一个运行的,同时只能是一个人再跑。
在iOS或者OS里面,一般用GCD就能吃处理较多的事务,下面就谈一下GCD的用法。
什么是GCD?
全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”
纯C语言,提供了非常多强大的函数
methodList info
1 |
|
实战演练全局队列
1 | dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); |
自定义队列
1 | dispatch_queue_t queue = dispatch_queue_create("com.apple.fgyong", DISPATCH_QUEUE_SERIAL); |
多个异步线程问题
1 | # 当ABC 3个异步线程,要求前两个个执行完再去执行后面的三个的时候例子: |
线程分组
1 | # 当多个任务同时进行的时候,也可以用group,ABCD任务进行完成的时候,最后在执行task。 |
同时处理多数据不管顺序
1 | dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); |
参考文章:Grand Central Dispatch (GCD) Reference
GCD提供的接口蛮多的,适用场景还是要熟练掌握,才能运用自如。