线程5--GCD简介

/******************************************************/
 
 同步函数
 
 (1)并发队列:不会开线程
 
 (2)串行队列:不会开线程
 
 异步函数
 
 (1)并发队列:能开启N条线程
 
 (2)串行队列:开启1条线程

/*******************************************************/

/*****************用异步函数往并发队列中添加任务********************/
/* //可以创建多个子线程
    //1.获得全局的并发队列
    dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //2.添加任务到队列中,就可以执行任务
    //异步函数:具备开启新线程的能力
    dispatch_async(queue, ^{
        NSLog(@"下载图片1----%@",[NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"下载图片2----%@",[NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"下载图片3----%@",[NSThread currentThread]);
    });
    //打印主线程
    NSLog(@"主线程----%@",[NSThread mainThread]);
*/
/*****************用异步函数往串行队列中添加任务*******************/
   //会开启子线程,但只会开启一个;
    //打印主线程
    NSLog(@"主线程----%@",[NSThread mainThread]);

    //创建串行队列
    dispatch_queue_t queue=dispatch_queue_create("name", NULL);    //第一个参数为串行队列的名称,是c语言的字符串
    //第二个参数为队列的属性,一般来说串行队列不需要赋值任何属性,所以通常传空值(NULL)

    //2.添加任务到队列中执行
    dispatch_async(queue, ^{
        NSLog(@"图片1----%@",[NSThread currentThread]);
        NSLog(@"图片2----%@",[NSThread currentThread]);
        NSLog(@"图片3----%@",[NSThread currentThread]);
    });
    //NSLog(@"主线程----%@",[NSThread mainThread]);
    //3.释放资源
    //    dispatch_release(queue);

 /*****************用同步函数往并发队列中添加任务*******************/
/*   //不会创建子线程;
    dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_sync(queue, ^{
        NSLog(@"image1---%@",[NSThread currentThread]);
        NSLog(@"image2---%@",[NSThread currentThread]);
        NSLog(@"image3---%@",[NSThread currentThread]);

    });
    NSLog(@"mainThread%@",[NSThread mainThread]);
*/
/*****************用同步函数往串行队列中添加任务*******************/
/*   //不会创建子线程;
    dispatch_queue_t queue=dispatch_queue_create("name", NULL);
    dispatch_sync(queue, ^{
        NSLog(@"image1%@",[NSThread currentThread]);
        NSLog(@"image2%@",[NSThread currentThread]);
        NSLog(@"image3%@",[NSThread currentThread]);
    });
    NSLog(@"mainThread%@",[NSThread mainThread]);*/
 /********************************************************/
    
时间: 2024-10-24 09:52:29

线程5--GCD简介的相关文章

线程属性pthread_attr_t简介

线程属性pthread_attr_t简介 本文编辑整理自: http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.html http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/ Posix线程中的线程属性pthread_attr_t主要包括scope属性.detach属性.堆栈地址.堆栈大小.优先级.在pthread_create中,

UI21-多线程: GCD Grand Center Dispatch

多线程: GCD  Grand Center Dispatch  中央派遣, 极重要的中心派遣,  任务和队列,任务,执行什么操作,队列:存放任务. 并发队列,异步,   DISPATCH_QUEUE_CONCURRENT, dispatch_async(queue,^{}); 创建多个线程,并发执行, 创建的任务不会立即执行,添加完毕后,这个函数结束之后,再开始并发执行线程, 并发队列,同步: DISPATCH_QUEUE_CONCURRENT ,dispatch_sync(queue,^{}

线程池的简介

该文转载自:http://blog.csdn.net/hsuxu/article/details/8985931 1.线程池简介:    多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.        假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.                一个线程池包括以下四

五、线程管理————GCD

本文只对GCD的其他操作进行一些补充. 1.延迟操作 实例: //延时操作    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ });         /*        dispatch_after的参数参数1  dispatch_time_t when多少纳秒之后执行参数2  dispatch_queue_t queue任务

创建线程方式-GCD

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

线程2.GCD

1.GCD GCD(Grand Central Dispatch) ---- '牛逼的中枢调度器'! // C语言框架 / 自动管理线程的生命周期(创建/释放) 推出GCD的目的:取代NSThread! 为"多核"的"并行"运算提出的解决方案! 优点: <1> GCD 能够自动利用更多的CPU的核数(双核/四核)! <2> GCD 会自动管理线程的生命周期. 1.2 GCD中的两个核心概念: "任务": 想要做的事情/执行

Java线程池中线程的状态简介

首先明确一下线程在JVM中的各个状态(JavaCore文件中) 1.死锁,Deadlock(重点关注) 2.执行中,Runnable(重点关注) 3.等待资源,Waiting on condition(重点关注) 4.等待监控器检查资源,Waiting on monitor(eg:如果使用System.out.println等需要分配计算机资源的时候线程会如此等待,主要还需看堆栈) 5.暂停,Suspended 6.对象等待中,Object.wait() 7.阻塞,Blocked(重点关注) 8

Multithreading annd Grand Central Dispatch on ios for Beginners Tutorial-多线程和GCD的入门教程

原文链接:Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial Have you ever written an app where you tried to do something,and there was a long pause while the UI was unresponsive?This is usually a sign that your app needs multithreadi

线程 interrupt()方法简介

class T implements Runnable { Thread t1,t2; T() { t1=new Thread(this); t2=new Thread(this); } public void run() { if(Thread.currentThread()==t2) { t1.interrupt(); } if(Thread.currentThread()==t1) { System.out.println("线程t1开始运行!"); try{ System.ou

(转)线程属性pthread_attr_t简介

Posix线程中的线程属性pthread_attr_t主要包括scope属性.detach属性.堆栈地址.堆栈大小.优先级.在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置. pthread_attr_t的主要属性的意义如下: __detachstate,表示新线程是否与进程中其他线程脱离同步, 如果设置为PTHREAD_CREATE_DETACHED 则新线程不能用pthread_join()来同步,且在退出时自行释放所占用的资源.缺省为PTHREAD_C