1 #import "ViewController.h"
2
3 @interface ViewController ()
4
5 @end
6
7 @implementation ViewController
8
9 - (void)viewDidLoad {
10 [super viewDidLoad];
11 // Do any additional setup after loading the view, typically from a nib.
12 //[self testSyncWithSerialQueue];
13 //[self testSyncWithConcurrentQueue];
14 //[self testAsyncWithSerialQueue];
15 [self testAsyncWithConcurrentQueue];
16 }
17
18
19
20 //1.同步方式向串行队列提交代码
21 //前面的线程执行完成后,才开始执行后面的线程
22 -(void)testSyncWithSerialQueue
23 {
24 //创建串行队列
25 dispatch_queue_t serialQueue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
26
27 //线程一
28 dispatch_sync(serialQueue, ^{
29 for (int i=0; i<100; i++) {
30 NSLog(@"线程一:%d",i);
31 }
32 });
33
34 //线程二
35 dispatch_sync(serialQueue, ^{
36 for (int i=0; i<100; i++) {
37 NSLog(@"线程二:%d",i);
38 }
39 });
40 }
41
42 //2.同步方式向并行队列提交代码
43 //前面的线程执行完成后.才开始执行后面的线程
44 -(void)testSyncWithConcurrentQueue
45 {
46 //创建并行的队列
47 dispatch_queue_t conQueue = dispatch_queue_create("conQueue", DISPATCH_QUEUE_CONCURRENT);
48
49 //线程一
50 dispatch_sync(conQueue, ^{
51 for (int i=0; i<100; i++) {
52 NSLog(@"线程一:%d",i);
53 }
54 });
55
56 //线程二
57 dispatch_sync(conQueue, ^{
58 for (int i=0; i<100; i++) {
59 NSLog(@"线程二:%d",i);
60 }
61 });
62 }
63
64 //3.异步方式向串行队列提交代码
65 //前面的线程执行完成后,才开始执行后面的线程
66 -(void)testAsyncWithSerialQueue
67 {
68 //创建串行队列
69 dispatch_queue_t serialQueue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
70
71 //线程一
72 dispatch_async(serialQueue, ^{
73 for (int i=0; i<100; i++) {
74 NSLog(@"线程一:%d",i);
75 }
76 });
77
78 //线程二
79 dispatch_async(serialQueue, ^{
80 for (int i=0; i<100; i++) {
81 NSLog(@"线程二:%d",i);
82 }
83 });
84 }
85
86 //3.异步方式向并行队列提交代码
87 //前面的线程执行和后面的线程同时执行
88 -(void)testAsyncWithConcurrentQueue
89 {
90 //创建并行队列
91 dispatch_queue_t conQueue = dispatch_queue_create("conQueue", DISPATCH_QUEUE_CONCURRENT);
92
93 //线程一
94 dispatch_async(conQueue, ^{
95 for (int i=0; i<100; i++) {
96 NSLog(@"线程一:%d",i);
97 }
98 });
99
100 //线程二
101 dispatch_async(conQueue, ^{
102 for (int i=0; i<100; i++) {
103 NSLog(@"线程二:%d",i);
104 }
105 });
106 }
107
108 - (void)didReceiveMemoryWarning {
109 [super didReceiveMemoryWarning];
110 // Dispose of any resources that can be recreated.
111 }
112
113 @end