OC开发_整理笔记——多线程之GCD
一、进程和线程

二、各种队列!
1、GCD:Grand Central Dispatch
2、串行队列(Serial)
3、并行队列(Concurrent)
4、主调度队列(main dispatch queue)
三、队列的任务处理
1、串行队列(✅DISPATCH_QUEUE_SERIAL)的同步任务和异步任务:dispatch_sync 和 dispatch_async

#串行同步执行结果:不会创建新线程,按照 顺序执行

#串行异步执行结果:创建了一个新线程,但是依然按照 顺序执行

#串行先执行异步,再执行同步的结果:发现同步一直是在主线程,但也是先让异步的执行完再来执行同步的,
从而说明一个串行队列是顺序执行的,但是也不影响主线程的操作

2、并行队列(✅DISPATCH_QUEUE_CONCURRENT)的同步任务和异步任务:dispatch_sync 和 dispatch_async

#并行同步执行结果:不会创建新线程,按照 顺序执行[同串行同步]
#并行异步执行结果:会新建多个线程、操作无序执行(有⽤,容易出错!)队列前如果有其他任务,会等待前面的任务完成之后再执⾏
场景:既不影响主线程,又不需要顺序执⾏行的操作!

#并行先执行同步,再执行异步的结果:发现同步执行完才会执行异步
#并行先执行异步,再执行同步的结果:顺序已经完全各种乱入了!

3、全局队列(DISPATCH_QUEUE_PRIORITY_DEFAULT):开发中用这个就对了dispatch_get_global_queue

#全局队列先执行同步,再执行异步的结果:实际上结果是和并列的都一样的效果

4、主线程队列:dispatch_get_main_queue[主队列中添加的同步操作永远不会被执⾏行,会死锁]

四、嵌套同步任务
1、在串行队列中嵌套多一个同步任务,会造成阻塞!!

五、小结一下
1、并行和串行的任务调度的区别

OC开发_整理笔记——多线程之GCD的更多相关文章
- OC开发_整理笔记——友盟分享(社交化组件)
0.友盟的地址 http://dev.umeng.com,进入友盟,在使用友盟之前我们需要注册账号获取key (1 进入我们的产品,添加新应用 (2 输入信息,然后就会获取到key 1.选择社会化分 ...
- iOS多线程之GCD小记
iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...
- iOS多线程之GCD、OperationQueue 对比和实践记录
[toc] 简介 在计算的早期,计算机可以执行的最大工作量是由 CPU 的时钟速度决定的.但是随着技术的进步和处理器设计的紧凑化,热量和其他物理约束开始限制处理器的最大时钟速度.因此,芯片制 ...
- Python开发【整理笔记】
回顾笔记 学python半年,新知识不断填充,之前学的东西也忘的差不多,整理下笔记,把重点再加深下印象,算是读书拾遗吧.... 1.类继承.新式类.经典类 首先,新式类.经典类的概念只存在于Pytho ...
- iOS开发-多线程之GCD(Grand Central Dispatch)
Grand Central Dispatch(GCD)是一个强有力的方式取执行多线程任务,不管你在回调的时候是异步或者同步的,可以优化应用程序支持多核心处理器和其他的对称多处理系统的系统.开发使用的过 ...
- OC开发_代码片段——使用Xib自定义tableViewCell
一.实现步骤 1.新建一个XIB文件:描述cell——tableCell.xib 2.新建UITableViewCell的子类,也就是cell文件:封装XIB内部的所有东西——TestCell.m \ ...
- Navsion二次开发_学习笔记
CodeUnit Note This feature is documented in the Navision Application Server Technical White Paper. ...
- iOS多线程之GCD学习笔记
什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...
- iOS开发多线程之GCD
Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Que ...
随机推荐
- False 'Sharing Violation' Xcopy error message
今天想要将QC的新工具自动拷贝到p4 用户机器上使用,为了避免每次通知大家升级啊!!! 于是,我在程序里调用了bat文件,执行拷贝操作,想在默默的情况下替换更新新版本工具,结果我测试发现没能成功更新版 ...
- phpcms v9 get的强大之处(列表页调用点击数)
{pc:get sql="select * from v9_art as g left join v9_art_data as p on p.id=g.id and g.catid=12 o ...
- manifest.json文件介绍
{ // 必须 "manifest_version": 2, // 清单文件的版本,这个必须写,而且必须是2 "name": "My Extensio ...
- java登录央行征信网站
package com.entrym.crawler.test; import java.util.HashMap; import java.util.Map; import org.apache.c ...
- android:versionCode和android:versionName 用途(转)
转自:http://blog.csdn.net/wh_19910525/article/details/8660416 Android的版本可以在androidmainfest.xml中定义,主要有a ...
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
//先加载插件所需要的 js .css 文件 <link href="css/fileinput.css" rel="stylesheet" type=& ...
- 关于Android中Animation的停止【转载】
转载自:http://blog.csdn.net/easonx1990/article/details/8231520 最近遇到一个需求,通过在GridView上改变焦点,并且GridView上每个i ...
- 【RF库Collections测试】Remove From List
Name:Remove From ListSource:Collections <test library>Arguments:[ list_ | index ]Removes and r ...
- 设置开机自启动VirtualBox虚拟机系统
如果常用VirtualBox虚拟机系统的话,设置个随开机启动也是很方便的.不需要打开VirtualBox窗口,直接就是系统启动了. 又继续上网搜索学习了.(设置开机自启动VirtualBox虚拟机系统 ...
- Ansible的Inventory管理
Ansible将可管理的服务器集合成为Inventory,Inventory的管理便是服务器的管理. hosts文件的位置: /etc/ansible/hosts 在命令行通过-i参数指定 通过/et ...