GCD 多线程的简单应用

1、进程就是运行的程序,程序是运行在内存中的,负责分配内存的
2、线程是负责程序中代码的实际运行的,一个进程至少有一个线程(主线程)
3、创建线程的目的就是为了开启一条新的执行路径,运行指定代码,与主线程中的代码实现同时运行 将耗时的任务分配到其它线程执行
4、多线程技术是为了并发执行多项任务,不会提高单个算法本身的执行效率
5、队列不是线程,也不表示对应的cup,队列是负责调度的,谁空闲,就把任务给谁
6、多线程技术的目的,就是为了在一个cpu上实现快速切换
7、GCD最简单的理解就是 把操作 放在 队列中去执行,队列是先进先出FIFO(First In First Out),操作到队列里面排队,然后根据先进先出的原则,然后队列把操作依次丢给CPU执行
(1)、它的操作是使用Block定义的
(2)、队列负责调度任务
(3)、GCD的方法都是以dispatch开头的
8、GCD队列
(1)、串行队列,同步任务,不需要新建线程
(2)、串行队列,异步任务,需 新建一个子线程,这个很重要,因为它既有多线程,又能控制线程数量,在开发中很有用,而且不容易出错
(3)、并行队列,同步任务,不需要创建线程
(4)、并行队列,异步任务,有多个任务,就开多个线程

线程还有一种理解就相当于,你小时候放学回家要做家庭作业吧,但是可能太多,你又做不完,然后你叫别人帮你写,写完之后再给你,或者你给多个人写,写完再给你,而你写作业相当于主线程,你叫别人写相当于新建的子线程,写完再给你相当于,子线程完成工作后在主线程刷新----->//这里的红色部分很重要

先进先出FIFO(First In First Out):可以理解成,你去银行取钱,你得先排队,先来的先取好,该你的时候把你的卡丢给 ATM机或者工作人员去执行,至于它(他或她)怎么执行的就不用管了,你的目的就是得到钱就行了,这就是GCD的工作机制

下面看代码进一步理解:
<p style="margin-top: 0px; margin-bottom: 0px; font-family: 'Andale Mono';"><pre name="code" class="objc"><pre name="code" class="objc" style="font-size: 18px; line-height: 24px;">DISPATCH_QUEUE_SERIAL:表示串行
serial.asyn:是线程的名字,写什么都可以
<pre name="code" class="objc" style="font-size: 18px; line-height: 24px;">dispatch_queue_t:是用来接收的
串行队列,异步任务
 
 
<pre name="code" class="objc" style="font-size: 18px; line-height: 24px;">dispatch_queue_t q = dispatch_queue_create("serial.asyn", DISPATCH_QUEUE_SERIAL);

 
 
 
 

 
 
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: 'Andale Mono';"><pre name="code" class="objc">dispatch_async(q, ^{

            NSLog(@"%@", [NSThread currentThread]);
        });

 
 
并行队列 同步任务:
dispatch_queue_t q = dispatch_queue_create("cn.itcast.gcd2", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(q, ^{
            NSLog(@"%@ %d", [NSThread currentThread], i);
        });

然后在block里面写上你需要执行的代码就行了






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值