zoukankan      html  css  js  c++  java
  • 同步,异步,串行,并行队列

      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
  • 相关阅读:
    千氪公开课第一期|如何实现写作收益的最大化?-千氪
    2018年十大区块链投资机构盘点-千氪
    vscode 问题
    jquery点击输入框提示文字消失输入文字变色
    IE8兼容css3
    点击特定按钮,文本框实现输入状态变化
    h5页面在iOS上的问题解决
    纯css三角提示框,兼容IE8
    适配问题
    webstorm配置编译sass
  • 原文地址:https://www.cnblogs.com/liaods/p/4788917.html
Copyright © 2011-2022 走看看