![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS 多线程
番薯大佬
码农一枚
展开
-
iOS多线程编程——线程锁的使用
锁是多线程中中最常用的同步工具。 在多线程编程中,不可避免的会遇到同一个资源在多个线程之间共同使用,这时候就需要通过加锁来保证线程的安全。 1、@synchronized 互斥锁(性能较差;适用线程不多,任务量不大的多线程加锁) (1)加锁的代码尽量少 (2)添加的OC对象必须在多个线程中都是同一对象 (3)优点是不需要显式的创建锁对象,便可以实现锁的机制。 (4)@synchronized块会隐...原创 2018-03-07 14:47:50 · 521 阅读 · 0 评论 -
iOS多线程编程——NSOperation的使用(买票实例)
@interface NSOperationViewController (){ NSOperationQueue *queueOther; NSOperationQueue *queueTicket; BOOL isStopSale;}@endNSInteger ticketsCount = 20; // 剩余票数NSInteger windowsCo...原创 2018-03-07 14:10:38 · 330 阅读 · 0 评论 -
多线程——Run Loop线程安全(4)
线程同步1-1、同步工具1-1-1、原子操作1-1-2、内存屏蔽和volatile变量只确保每次操作都是从内存中获取信息,而不用寄存器内保存的数据OSMemoryBarrier函数,设置内存屏蔽,volatile变量1-1-3、锁Table 4-1 Lock typesLockDescription转载 2015-02-10 16:24:33 · 754 阅读 · 0 评论 -
多线程——Run Loop配置源(3)
配置Run Loop源---配置源的过程就是源的创建调用过程配置过程分为四个阶段:阶段1——定义/创建(一个源)、阶段二——安装(将输入源安装到所在Run Loop中)、阶段三——注册(将输入源注册到客户端,协调输入源的客户端)阶段四——调用(通知输入源,开始工作)。1-1、定义自定义输入源创建自定义输入源需要定义以下内容1)输入源要处理的信息2)使感兴趣的客户端知道如转载 2015-02-10 16:08:14 · 682 阅读 · 0 评论 -
多线程——Run Loop使用(2)
一、何时使用Run Loop对于辅助线程,在需要和线程有更多交互时,才使用Run Loop。比如:1)使用端口或者自定义输入源来和其他线程通讯2)使用线程定时器3)Cocoa中使用任何performSelector...的方法(参考Table:Performing selectors on other threads)4)使线程周期性工作二、如何使用Run转载 2015-02-10 16:04:01 · 495 阅读 · 0 评论 -
多线程——Run Loop剖析(1)
Run Loop就是一个事件处理的循环,用来不停的调动工作以及处理输入事件。使用Run Loop的目的就是节省CPU效率,线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。一,Run Loop剖析Structure of a Run Loop and its sources上图显示了线程的输入源A,基于端口的输入源(Port Sources)B,自定义输入源(Cu转载 2015-02-10 15:57:47 · 609 阅读 · 0 评论 -
多线程开发——线程安全
一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象、同一个变量、同一个文件和同一个方法等。因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安全等问题。因此要避免这些问题,我们需要使用“线程锁”来实现。本文主要论述IOS创建锁的方法(总结):一、使用关键字1) @synchronized(互斥锁)优点:使用 @sy转载 2015-02-10 15:04:30 · 636 阅读 · 0 评论 -
iOS多线程编程
使用多线程的好处是可以把程序分成相对独立的几个模块,可以有效的防止某个模块堵塞的时候导致整个程序卡死;还有就是提高运行效率,现在CPU都是多核,多个核可以同时跑,可以同时执行多条线程。多线程的几个概念:1、串行和并发串行的意思是在多个任务下,每次只会有一个任务被执行,并发的意思是同一时间多个任务同时发生。并发是一种现象,解决并发现象的技术,叫做并行。我们经常说的多线程编程,说的就是并行技术,可以让...转载 2015-05-30 14:12:27 · 457 阅读 · 0 评论 -
iOS多线程编程——GCD的使用
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。GCD方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。GCD和block的配合使用,可以方便地进行多线程编程。设计:GCD的...原创 2015-07-13 16:00:50 · 535 阅读 · 0 评论 -
【Objective-C】GCD介绍
转载原址:http://www.jianshu.com/p/7e50d09cae50整理自raywenderlich。1.GCD是嘛?GCD是Grand Central Dispatch的缩写,是苹果对多核硬件上执行并发代码的一种支持。它有以下优点: GCD通过把计算密集型任务放于后台运行,以此提高APP的响应速度。GCD提供了更简单的并发模型,它优于线程锁转载 2016-04-09 18:48:52 · 409 阅读 · 0 评论 -
iOS多线程编程——NSOperation的使用
NSOperation是苹果提供给我们的一套多线程解决方案。实际上NSOperation是基于GCD更高一层的封装,但是比GCD更简单易用、代码可读性也更高。NSOperation需要配合NSOperationQueue来实现多线程。因为默认情况下,NSOperation单独使用时系统同步执行操作,并没有开辟新线程的能力,只有配合NSOperationQueue才能实现异步执行。因为NSOpera...原创 2016-07-14 23:40:40 · 473 阅读 · 0 评论 -
iOS多线程编程——NSThread的使用
NSThread是多线程的一种,优缺点如下:(1)优点:NSThread 比GCD、NSOperation都轻量级(2)缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销NSThread有两种方法创建子线程,一种是隐式创建,另一种是显示创建。第一种是隐式创建,有以下几种方式:(1)多用于串行,且在主线程中执行。- (id)performSelector:(SEL)a...原创 2015-05-30 14:04:27 · 729 阅读 · 0 评论 -
多线程处理方式及优缺点
iOS有四种多线程编程的技术,分别是:NSThread,Cocoa NSOperation,GCD(全称:Grand Central Dispatch),pthread。四种方式的优缺点介绍:1)NSThread优点:NSThread 比其他两个轻量级。缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销。2)Cocoa NSOperation优点:不原创 2016-05-19 17:38:36 · 1919 阅读 · 0 评论 -
iOS多线程编程——NSThread的使用(买票实例)
多线程的使用,主要是为了提高运行效率,如果涉及到到同一个方法,或同一个数据的操作时,就避免不了造成资源抢夺的情况,这样情况下会出现异常。为了避免异常,需要进行加锁处理。// 剩余票数NSInteger ticketCount = 10;// 购票窗口- (void)buyTicket{ NSThread *window1 = [[NSThread alloc] initWithTar...原创 2018-03-06 15:00:59 · 342 阅读 · 0 评论