首页 > 编程语言 > 详细

多线程GCD

时间:2015-03-23 21:34:26      阅读:292      评论:0      收藏:0      [点我收藏+]

说道线程,我们就先来说说什么是进程,什么是线程.线程和进程有什么差别

首先,线程是只进程内的一个执行单元,也是进程内可以调度的实体.与进程的区别在于下面的几个方面

1,调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

2,并发性:不仅进程之间可以并发,线程之间也可以并发执行,同一个进程的多个线程之间也可以并发执行

3,用有资源:进程是用有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源

4,系统开销:在创建或者撤销进程时,由于系统都要为之分配和回收资源,导致系统开销明显大于创建或者撤销线程时的开销

可以总结为: 进程就是饭店的老板,老板提供饭店的房子,桌子,椅子,饭菜等,拥有这个饭店

                进程就是饭店的服务员,当客人来了,负责分配饭店里的资源,比如顾客坐在什么位置,厨师要做什么菜

多线程有好几种形式

1.NSThread

技术分享

2.GCD

一般都是是用异步执行,同步执行还是会造成系统拥挤

延时多少后执行,是可以定时的

技术分享

首先,声明一个队列

dispatch_queue_t custom = dispatch_queue_create("jelly", DISPATCH_QUEUE_CONCURRENT);

其中第一个参数是标志队列的,第二个参数是用来定义队列的参数(目前不支持,因此一般传入NULL)

接下来执行一个队列

dispatch_async(custom, ^{
        [blockSelf banzhuan];
    });

其中,首先传入的是之前创建的队列,然后是运行的代码块

如果要暂停一个队列,可以调用如下代码.暂停一个队列会阻止和该队列相关的所有的代码运行

dispatch_suspend(myQueue);

如果暂停一个队列不要忘记恢复.暂停和恢复操作和内存管理中的retain和release相似.调用dispatch_suspend(myQueue)会增加暂停计数,而dispatch_resume(myQueue)会减少.队列会在暂停计数成零的情况下才会运行

恢复一个队列

dispatch_resume(myQueue)

应该注意dispatch_resume(myQueue) dispatch_suspend(myQueue)在主线程运行代码

使用GCD,可以让你的程序不会失去响应,多线程不容易使用,用了GCD,会让它变的简单,你无须专门进行线程的管理

 

 

 

 

 

多线程GCD

原文:http://www.cnblogs.com/nsjelly/p/4360852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!