GCD
来源:互联网 发布:磁力解析在线播放软件 编辑:程序博客网 时间:2024/05/17 00:00
GCD的“艺术”可归结为选择正确的队列调度函数来提交任务
顺序队列: 同一时间只执行一件任务,每件任务只有在先前的任务完成后才开始。同时,你并不知道一个任务完成到另一个任务开始之间的间隔时间
例:dispatch_queue_t queue = dispatch_queue_create ( "com.dispatch.serial" ,DISPATCH_QUEUE_SERIAL ); //生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序去执行,实际上为单线程执行。第一个参数是队列的名称,在调试程序时会非常有用,所有尽量不要重名了。
dispatch_queue_t queue = dispatch_get_main_queue(); //获得主线程的dispatch队列,实际是一个串行队列。注意无法控制系统自定义线程队列的执行继续或中断
并发队列: 并发队列中的任务可以保证按进入队列的顺序被执行…仅此而已!任务可能以任意顺序完成而且你不知道何时下一个任务会开始,或是任一时刻有多少任务在运行, 这完全取决于GCD
例:dispatch_queue_t queue = dispatch_queue_create ( "com.dispatch.concurrent" , DISPATCH_QUEUE_CONCURRENT ); //生成一个并发执行队列,block被分发到多个线程去执行
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //获得程序进程缺省产生的并发队列,可设定优先级来选择四个优先级队列。由于是系统默认生成的,所以无法调用dispatch_resume()和dispatch_suspend()来控制执行继续或中断。以下是四个优先级:DISPATCH_QUEUE_PRIORITY_HIGH,DISPATCH_QUEUE_PRIORITY_DEFAULT , DISPATCH_QUEUE_PRIORITY_LOW, DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN
队列类型可分为5种:主队列(main queue),四种通用调度队列(global queue),自己定制的队列。
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- GCD
- gcd
- GCD
- GCD
- GCD
- GCD
- GCD
- 关于获取调用当前方法的方法名的问题。
- ubuntu14.04创建含ssh服务的suse11sp2 docker容器
- Android--第三天(XML解析,sharedPreferences进行数据存储,SQLite数据库存储数据,URI,ContentProvider共享数据,监听ContentProvider)
- 安卓android jni创建线程后无法findclass
- 运算符
- GCD
- 这是一个长长的故事--关于自动包装的理解
- 关于Oracle所有适用例程都无法建立新连接问题
- hibernate本地验证
- WebLogic(12C)—NetWork Channel
- HBase快速导入数据--BulkLoad
- 快速排序算法真神奇
- 进入新市场时要避免犯下的三个错误
- Huffman树