多线程
MeteoriteMan
iOS开发者
展开
-
@synchronized
一般来说,iOS多线程第一个碰见的锁就是这个@synchronized了.@synchronized (<#token#>) { <#statements#>}它的作用是创建一个互斥锁(互斥锁会使得上锁以后,新的想要访问代码块的线程阻塞,直到执行完毕锁解除).一般用法如下:@synchronized (self) { /// 加锁代码}...原创 2019-10-24 02:30:57 · 366 阅读 · 0 评论 -
自定义NSOperation
对于NSOperation.如果要自定义的话,我们需要重写Start或者main.对于start方法If you are implementing a concurrent operation, you must override this method and use it to initiate your operation. Your custom implementation must...原创 2019-07-13 20:16:19 · 727 阅读 · 0 评论 -
NSOperation
NSOperation作为苹果四种多线程方式(pthread、NSThread、GCD、NSOperation)中的一种.从左到右抽象层级越来越高.虽说NSOperation的底层是GCD.然而,与GCD相比,GCD更偏向底层,性能好,依赖比较少.NSOperation操作比较方便,使用简单,很方便的就能看到操作的执行状态.NSOperation是一个抽象类.要使用相应功能的话需要使用NS...原创 2019-07-05 20:35:47 · 247 阅读 · 0 评论 -
NSOperationQueue
NSOperationQueue/// queue上的任务的执行进度.(执行完了才能算)@property (readonly, strong) NSProgress *progress API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));使用用例:NSOperationQueue *queue = [[NSO...原创 2019-07-08 11:12:03 · 803 阅读 · 0 评论 -
GCD延时执行(dispatch_after)
上一篇我们讲了GCD的定时器GCD定时器(GCD Timer)这一篇我们来说说GCD的延迟执行.在NSTimer里面我们有几个NSObject的分类方法执行延时方法.一般把这些方法称之为线程间的"交互".戳NSThread详解在GCD里面的延迟.有两个方法:// dispatch_after(<#dispatch_time_t when#>, <#dispatc...原创 2019-06-08 22:46:29 · 1588 阅读 · 0 评论 -
GCD定时器(GCD Timer)
时间来不及了,赶快上车… /// 创建一个Timer// /**// dispatch_source创建方法//// @param type 创建的dispatch_source的类型// @param handle// @param mask// @param queue 添加到的队列// @return 返回一个新创...原创 2019-05-29 22:57:11 · 2357 阅读 · 0 评论 -
GCD栅栏(dispatch_barrier)
上一讲我们将到了GCD单次执行一个方法或者是多次执行一个方法.GCD单次执行与多次执行(disatch_once与dispatch_apply)这一讲我们讲讲栅栏栅栏,顾名思义就是把什么东西拦下来的方法.函数/// 不带参数//dispatch_barrier_sync(<#dispatch_queue_t _Nonnull queue#>, <#^(void)b...原创 2019-05-29 20:44:15 · 1033 阅读 · 0 评论 -
GCD信号量(dispatch_semaphore)
上一讲我们谈到可以使用GCD调度组来实现异步处理完成后最后回到某个线程后集中处理(多接口异步请求.回到主线程刷新UI).戳:GCD调度组(dispatch_group)这一讲我们来谈一个也能实现该需求的GCD信号量(Semaphores)主要就是下面几个东西// dispatch_semaphore_t// dispatch_semaphore_create(<#l...原创 2019-05-18 14:38:25 · 620 阅读 · 0 评论 -
GCD调度组(dispatch_group)
上一讲我们稍微提了一下GCD的线程间通信.戳:GCD线程间的通信这一讲我们来谈谈GCD调度组.不知道大家有没有这么一个需求.就是一个VC比如主页吧.有许多的接口.如果是每下来一个接口就刷新一波数据的话,那么体验上就十分的差.整理一下需求.就是统一的进行网络请求.然后等所有的网络请求回来了之后.刷新接口.拿AFN举例吧.AFN网络请求的话默认就是给你异步请求的.比如{ NSLog...原创 2019-05-18 12:46:38 · 901 阅读 · 0 评论 -
GCD线程间的通信
上一讲我们讲到了GCD任务队列的组合方式.戳GCD任务队列的组合方式这一讲我们讲讲线程间的通信.举个简单的例子吧.就是在我们使用AFN进行网络请求的时候.我们直接在主线程写下网络请求的代码.然后在AFN的block回调中直接处理就OK了.block回调内直接就是主线程.你们想过一个问题没有.为什么使用AFN进行网络请求的时候我可以去处理其他的事件.比如点个按钮什么的不会有任何卡死UI的现...原创 2019-05-18 01:34:16 · 390 阅读 · 0 评论 -
GCD任务队列的组合方式
上一讲我们简单的讲了讲:GCD的简单介绍然后有了以下的概念.队列分为串行队列和并发队列.任务分为同步任务和异步任务.那么任务与队列的组合方式就有了以下四种任务\队列串行队列并行队列同步任务--异步任务--我们还说了,有两种特殊的队列.全局队列和主队列.由于全局队列可以直接作为一个并发队列来使用.这里就不做比较了.那么,现在又多了两种组合方...原创 2019-05-17 23:46:52 · 386 阅读 · 0 评论 -
GCD单次执行与多次执行(disatch_once与dispatch_apply)
上一讲将到了GCD的信号量.本篇我们来谈论一下dispath_once.不知道大家是否用过单例.记不记得单例的调用一般是怎么调用的.如果是创建一个单例.对应的创建方法是否是应该执行一次.单例每次"创建"的时候改变的值在后面再次"创建"的时候的值是一样的.这是因为单例的创建于一般对象的创建有一些区别.拿苹果的单例举例子吧.一般都是类方法.要么是shared.要么是default....原创 2019-05-21 21:24:49 · 599 阅读 · 0 评论 -
GCD的简单介绍
WIKI:Grand_Central_DispatchGCD是一种接近底层的基于线程池的多线程开发手段.遵循先进先出的规则.他会自动的管理线程的生命周期,而且会"智能"的利用到系统的多核.不过个人认为GCD最大的优势是闭包,以及不用对线程进行管理,写起来很简单有木有.GCD中最重要的两个概念:任务在GCD中,任务是我们多线程开发的基础.可以理解为NSThread中需要异步执行的代码.在G...原创 2019-05-15 20:51:31 · 531 阅读 · 0 评论 -
NSThread详解
属性属性类型解释currentThreadNSThread获取当前线程的一些信息threadDictionaryNSMutableDictionary(readOnly)线程的一些本地属性,可以使用setObject:forkey:来配置threadPrioritydouble(0.0~1.0)线程优先级,最高为1.0(已废弃,用qualityOfS...原创 2019-05-09 20:47:31 · 936 阅读 · 0 评论 -
NSThread的简单介绍
NSThread / Thread其实算是一种东西.苹果的介绍是当你想执行一个很长的任务(CPU耗时长,比如素数的计算等).然而又不想要用户长时间的等待(UI线程(主线程)被占用就造成"卡死"的假象).那么就可以使用NSThread,说白了也就是一个多核计算机系统上的一个多线程框架(我们写的单个的iOS App都是单个进程…多进程的话是iOS系统层级的,其余系统上的多进程我们就不讨论了).一般...原创 2019-05-08 20:49:13 · 308 阅读 · 0 评论 -
Pthread的简单应用
Pthread是一种POSIX下的多线程开发手段维基百科:POSIX线程.// /**// 创建一个线程//// @param pthread_t 线程句柄// @param pthread_attr_t 线程属性(主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。).当传NULL的时候表示使用默认配置// @param _Nu...原创 2019-05-08 20:46:39 · 223 阅读 · 0 评论