GCD应用

 1 //
 2 //  ViewController.m
 3 //  GCDdemo
 4 //
 5 //  Created by ys on 15/11/23.
 6 //  Copyright (c) 2015年 ys. All rights reserved.
 7 //
 8 
 9 #import "ViewController.h"
10 
11 @interface ViewController ()
12 
13 @end
14 
15 @implementation ViewController
16 /**
17  
18  GCD的任务
19  
20  1> disptach_sync       没有创建线程的欲望,就在当前线程执行
21  最主要的目的,阻塞并行队列任务的执行,只有当前的同步任务执行完毕后,后续的任务才能够执行
22  应用场景:用户登录!
23  
24  2> dispatch_async      有创建线程的欲望,但是创建多少条线程,取决与队列的类型
25  
26  GCD的队列
27  
28  1> 串行队列              类似于跑步,只有一条跑道
29  如果存在异步任务,就会在新线程中执行异步任务,而同步任务依旧在当前线程中执行
30  
31  2> 并行队列              类似与赛跑,具体跑道的数量,由系统决定
32  */
33 
34 - (void)viewDidLoad
35 {
36     [super viewDidLoad];
37     
38     [self demo];
39 }
40 
41 - (void)demo
42 {
43     dispatch_queue_t q = dispatch_queue_create("demo", DISPATCH_QUEUE_CONCURRENT);
44     
45     // 在新线程中工作
46     dispatch_async(q, ^{
47         // 2
48         NSLog(@"%@", [NSThread currentThread]);
49         
50         __block BOOL userLogon = NO;
51         
52         // 用户登录,用户输入用户名,密码之后,提交到服务器确认身份
53         // 应用场景1:用来阻塞必须要按照顺序执行的任务
54         dispatch_sync(q, ^{
55             // 2
56             NSLog(@"用户网络登陆 %@", [NSThread currentThread]);
57             
58             [NSThread sleepForTimeInterval:3.0f];
59             
60             userLogon = YES;//or NO
61         });
62         
63         // 身份确认之前,不能做其他事情
64         dispatch_async(q, ^{
65             // 可能是3,也可能是2
66             // 3.0(对的) / 立马执行(不对的)
67             NSLog(@"后续处理 %@", [NSThread currentThread]);
68             
69             if (userLogon) {
70                 NSLog(@"welcome");
71             } else {
72                 NSLog(@"why");
73             }
74         });
75         
76         // 队列是先进先出FIFO的,队列中的任务都是串着的
77     });
78 }
79 
80 
81 @end

 

转载于:https://www.cnblogs.com/yangshun-work/p/4988057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值