IOS之线程(GCD)

原创 2014年11月25日 16:06:55
//GCD(先进先出 FIFO)
    //串行:前一个任务完成,后一个任务才能执行
    //并行:任务在派发时是有序的,但是不用等第一个任务执行完成才开始
    //GCD队列分为三种:主队列,全局队列,自定义队列
    
    //1,使用主队列实现任务派发(串行),在主线程中
    /*
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    //1.1,添加任务
    dispatch_async(mainQueue, ^{
        NSLog(@"第一个任务:当前线程是:%@",[NSThread currentThread]);
    });
    dispatch_async(mainQueue, ^{
        NSLog(@"第二个任务:当前线城是:%@",[NSThread currentThread]);
    });
    dispatch_async(mainQueue, ^{
        NSLog(@"第三个任务:当前线程:%@",[NSThread currentThread]);
    });
    dispatch_async(mainQueue, ^{
        NSLog(@"第四个线程:当前线程:%@",[NSThread currentThread]);
    });
    */
    
    NSLog(@"当前任务:%@",[NSThread currentThread]);
    //2,自定义队列(串行)
    /*
    dispatch_queue_t myQueue = dispatch_queue_create("com.lanou.myqueue", DISPATCH_QUEUE_SERIAL);
    //2.1,添加任务
    dispatch_async(myQueue, ^{
        NSLog(@"第一个任务:当前任务:%@",[NSThread currentThread]);
    });
    dispatch_async(myQueue, ^{
        NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
    });
    dispatch_async(myQueue, ^{
        NSLog(@"第三个任务,当前任务:%@",[NSThread currentThread]);
    });
    */
    
    //3,自定义队列(并行)
    /*
    dispatch_queue_t myQueue1 = dispatch_queue_create("com.lanou", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(myQueue1, ^{
        NSLog(@"第一个任务:当前任务:%@",[NSThread currentThread]);
    });
    dispatch_async(myQueue1, ^{
        NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
    });
    dispatch_async(myQueue1, ^{
        NSLog(@"第三个任务,当前任务:%@",[NSThread currentThread]);
    });
    */
    //全局
    dispatch_queue_t globleQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //3.1,添加任务
    dispatch_async(globleQueue, ^{
        NSLog(@"第一个任务,当前任务:%@",[NSThread currentThread]);
    });
    dispatch_async(globleQueue, ^{
        NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
    });
    

ios多线程学习之GCD线程锁

因为在以前的开发中实在是很少会用到多线程的知识,但是现在手中的项目是做视频开发。 而在视频开发类项目中,最困难的就是逻辑和多线程处理,这几天没事研究了一下线程锁,我觉的一个简答的代码实例,就能体现出 ...
  • my_programe_life
  • my_programe_life
  • 2015年11月30日 00:03
  • 1384

iOS GCD 开启线程

/*系统自带*/ 1、主队列(串行队列) dispatch_queue_t mainQueue=dispatch_get_main_queue(); 同步执行+系统串行队列,会发生死锁。 ...
  • Hchq_99
  • Hchq_99
  • 2015年06月04日 21:53
  • 676

iOS GCD三种创建线程的方式

- (IBAction)gcd1:(id)sender {     //用于全局并发队列     dispatch_queue_t qGlobal=dispatch_get_global_...
  • woshidaniu
  • woshidaniu
  • 2015年06月24日 19:30
  • 1396

GCD退出线程执行

GCD本身并没有停止正在运行的线程的API,但可以通过添加线程时进行循环判断调用,如果停止的标志为ture则停止线程运行。方法如下: 点击导航栏上的退出则退出线程通讯:   self.navigat...
  • linfengwenyou
  • linfengwenyou
  • 2015年10月07日 13:25
  • 637

iOS开发系列线程 @synchronized锁 GCD NSThread

概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步...
  • qq871531334
  • qq871531334
  • 2015年06月26日 13:54
  • 1154

使用GCD来处理后台线程和UI线程的交互

转自http://blog.devtang.com/blog/2012/02/22/use-gcd/ 什么是GCD Grand Central Dispatch (GCD)...
  • Light_Jewel
  • Light_Jewel
  • 2013年06月27日 21:25
  • 4403

多线程——GCD(串行队列)

无论队列中所指定的执行的函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 要不要开线程由执行任务决定 dispatch_sync 不开 dispatch_async 开 开几条线程...
  • yi_zz32
  • yi_zz32
  • 2015年11月21日 00:11
  • 11804

iOS使用GCD管理线程池

//创建监听组     dispatch_group_t group=dispatch_group_create();     //创建并行队列 //    dispatch_que...
  • iosWorker
  • iosWorker
  • 2016年07月19日 16:12
  • 2440

使用GCD处理几个线程之间的依赖关系。

有时候我们在开发过程中,会有这样的需求,a任务开始执行的前提是b任务执行完成,c任务开始执行需要等a、b两个异步任务完成,即a依赖于b,c又依赖a,这种需求我们可以使用的GCD来处理。...
  • u014247354
  • u014247354
  • 2017年10月31日 21:16
  • 116

多线程学习10-GCD的线程间通信

学习多线程10(之前跟着小码哥视频学习了多线程,准备把学到的东西放到网上,便于参考。仅有视频,所以所有文字都是自己打的,同时也温习一下多线程) GCD的线程间通信,简单事例(下载图片)。 #i...
  • Leemin_ios
  • Leemin_ios
  • 2016年04月19日 21:08
  • 1092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS之线程(GCD)
举报原因:
原因补充:

(最多只允许输入30个字)