
多线程
文章平均质量分 95
多线程
卡卡西Sensei
这个作者很懒,什么都没留下…
展开
-
iOS底层探索之多线程(十八)——锁篇章的完结篇(手把手两种方式带你实现一个读写锁!)
iOS 开发,各种锁你了解多少?NSLock、NSCondtion、NSRecursiveLock…回顾在上篇博客中已经通过 Swift的Foundation源码分析NSLock、NSCondtion、NSRecursiveLock、NSCondition等锁了,那么本篇博将手把手带你实现一个读写锁!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GC原创 2021-08-26 13:04:17 · 651 阅读 · 0 评论 -
iOS底层探索之多线程(十七)——通过 Swift的Foundation源码分析锁(NSLock、NSCondition、NSRecursiveLock)
iOS 开发,各种锁你了解多少?NSLock、NSCondtion、NSRecursiveLock…回顾在上篇博客中已经对NSLock、NSCondtion、NSRecursiveLock、NSCondition等锁进行了举例分析,那么本篇博客就继续分析锁,从Foundation源码分析锁!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列原创 2021-08-25 17:38:17 · 812 阅读 · 0 评论 -
iOS底层探索之多线程(十六)——锁分析(NSLock、NSCondtion、NSRecursiveLock、NSCondition)
iOS 开发,各种锁你了解多少?NSLock、NSCondtion、NSRecursiveLock…回顾在之前的一篇博客中,介绍了锁的种类,在上一篇博客中已经对@synchronized锁进行了源码分析,还有其他的一些锁没有介绍,那么本篇博客就分析一下其他的一些锁!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之原创 2021-08-24 18:14:57 · 739 阅读 · 0 评论 -
iOS底层探索之多线程(十五)—@synchronized源码分析
对于多线程你了解多少?对于锁你又了解多少?锁的原理你又知道吗?iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)iOS底层探索之多线程(八)—GCD源码分析(函数的同步性、异步性、单例)原创 2021-08-23 15:59:53 · 557 阅读 · 0 评论 -
iOS底层探索之多线程(十四)—关于@synchronized锁你了解多少?
对于多线程你了解多少?对于锁你又了解多少?锁的原理你又知道吗?iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)iOS底层探索之多线程(八)—GCD源码分析(函数的同步性、异步性、单例)原创 2021-08-22 22:40:38 · 900 阅读 · 0 评论 -
iOS底层探索之多线程(十三)—锁的种类你知多少?
回顾你用过哪些锁?对于锁的种类你了解多少?锁的原理知道否?从本篇博客开始将对锁的相关内容进行分析!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)iOS底层探索之多线程(八)—GCD原创 2021-08-21 21:53:32 · 998 阅读 · 0 评论 -
iOS底层探索之多线程(十二)—GCD源码分析(事件源dispatch_source)
回顾在上篇博客已经对GCD的调度组做了介绍和举例应用,还有对底层源码的分析,那么本篇博客将对事件源dispatch_source进行分析!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因原创 2021-08-20 15:27:35 · 672 阅读 · 0 评论 -
iOS底层探索之多线程(十一)—GCD源码分析(调度组)
回顾在上篇博客已经对GCD的信号量做了一个介绍和举例应用,还有对底层源码的分析,那么本篇博客 看苹果工程师,如何巧妙封装调度组,看完底层源码直呼好家伙,真是妙啊!!!1. 调度组1.1 调度组介绍调度组最直接的作用就是控制任务的执行顺序dispatch_group_create :创建调度组组dispatch_group_async:进组的任务 执行dispatch_group_notify :进组任务执行完毕的通知dispatch_group_wait: 进组任务执行等待时间dis原创 2021-08-19 22:05:35 · 895 阅读 · 0 评论 -
iOS底层探索之多线程(十)—GCD源码分析( 信号量dispatch_semaphore_t)
回顾在上篇博客已经对GCD的栅栏函数做了一个基本介绍,还有应用的举例并且对底层源码进行了分析,本篇博客将对信号量进行探索分析!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)iOS底原创 2021-08-18 19:23:24 · 1042 阅读 · 0 评论 -
iOS底层探索之多线程(九)—GCD源码分析(栅栏函数)
回顾在上篇博客已经对GCD函数的同步性/异步性还有单例的底层源码,作了详细的分析,那么本篇博客将对栅栏函数,调度组等底层源码进行探索分析!iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列iOS底层探索之多线程(五)—GCD不同队列源码分析iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)iOS底层探索之多线程(七)—GCD源码分析(死锁的原因原创 2021-08-17 22:07:05 · 1534 阅读 · 0 评论 -
iOS底层探索之多线程(八)—GCD源码分析(函数的同步性、异步性、单例)
回顾在上篇博客已经对GCD的sync同步函数产生死锁的情况,进行了底层的源码探索分析,那么本篇博客继续源码的探索分析!1. 全局并发队列+同步函数dq->dq_width == 1为串行队列,那么并发队列该怎么走呢?如下图,走的是下面的框框中流程但是这么多的分支,到底是走的哪一个呢?通过对_dispatch_sync_f_slow、 _dispatch_sync_recurse 、_dispatch_introspection_sync_begin 、_dispatch_sync_invo原创 2021-08-16 19:54:00 · 735 阅读 · 0 评论 -
iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)
回顾在上篇博客已经对GCD的sync 同步函数、async 异步函数进行了源码的分析,那么本篇博客继续源码的探索分析!1. 补充sync 和 async 的区别是否可以开启新的线程执行任务任务的回调是否具有异步行、同步性是否产生死锁问题2. 死锁 源码分析在上篇博客分析,同步 sync函数的流程是_dispatch_sync_f -- > _dispatch_sync_f_inline -- > _dispatch_barrier_sync_f走到_dispatch_b原创 2021-08-15 21:48:32 · 887 阅读 · 0 评论 -
iOS底层探索之多线程(六)—GCD源码分析(sync 同步函数、async 异步函数)
回顾在上篇博客对GCD的不同的队列继续了底层的源码探索分析, 那么本篇博客将继续对GCD的函数继续源码分析。1. sync我们都知道 GCD底层是用C写的,封装了 block函数来执行添加的任务,那么这个 block底层是如何封装的呢?dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"GCD函数分析"); });在源码里面搜索dispatch_sync我们看的是block也就是第二个参数work,直接看 w原创 2021-08-14 14:12:11 · 989 阅读 · 0 评论 -
iOS底层探索之多线程(五)—GCD不同队列源码分析
回顾在上篇博客已经介绍了各种队列和异步、同步函数的组合,GCD的队列和函数,对队列和任务的执行有了清晰的认识, 那么本篇博客将继续介绍GCD的队列和源码分析。iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁iOS底层探索之多线程(三)—初识GCDiOS底层探索之多线程(四)—GCD的队列1. 主队列分析查看主队列的api如下图:主队列是一个特殊的串行队列主队列在调用main()函数之前自动创建的。主队列在应用程序上下文中用于与主线程和main runl原创 2021-08-13 13:42:23 · 967 阅读 · 0 评论 -
iOS底层探索之多线程(四)—GCD的队列
回顾在上篇博客已经介绍了GCD的队列和函数,我们对 GCD有了一个初步的认识,那么本篇博客将继续介绍GCD的相关知识。1. GCD中三种队列形式1.The main queue:系统自带的一个队列,放到这个队列中的 代码会被系统分配到主线程中执行。Main queue可以调用 dispatch_get_main_queue()来获得。因为main queue是与主线程相关的,所以这是一个串行队列, 交至其中的任务 顺序执行(一个任务执行完毕后,再执行下一个任务)。2.Global queues:整个原创 2021-08-12 13:58:33 · 1257 阅读 · 3 评论 -
iOS底层探索之多线程(三)—初识GCD
回顾在前两篇博客,已经介绍了进程和线程,还介绍了自旋锁和互斥锁等相关内容,在 iOS 开发中,使用最多的还是 GCD,那么从本篇开始讲陆续介绍 GCD。iOS底层探索之多线程(一)—进程和线程iOS底层探索之多线程(二)—线程和锁1. 什么是 GCDGCD定义Grand Center Dispatch简称GCD,是苹果公司开发的技术,以优化应用程序支持多核心处理器。纯 C语言,提供了非常多期待的函数。GCD是苹果公司为多核的并行运算出的解决方案。GCD会自动利用更多的CPU内核(比原创 2021-08-11 13:13:59 · 834 阅读 · 0 评论 -
iOS底层探索之多线程(二)—线程和锁
回顾在上一篇博客中,我们已经对进程和线程有了一定的了解了,那么本次博客将继续讲解!1. 线程的生命周期在程序开发中有个名词——生命周期,我们都知道APP 有生命周期,那么线程的生命周期是什么样子的呢?线程生命周期线程生命周期大致包括 5个阶段:新建:通过创建线程的函数方法,创建一个新的线程。就绪:线程创建完成之后,调用 start方法,线程这个时候处于等待状态,等待CPU时间分配执行。运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作原创 2021-08-10 20:44:49 · 1241 阅读 · 2 评论 -
iOS底层探索之多线程(一)—进程和线程
前言在iOS的面试中多线程是经常被问到的,多线程也是一个难点,很多面试者平时用的不多,因此很难回答到点子上,那么本篇博客就对多线程进行探索和分析。1. 进程和线程什么是进程进程是指在系统中正在运⾏的⼀个应⽤程序,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。每个进程之间是独立的,每个进程运行在其专有的且受保护的内存空间内在 MAC电脑上,可以通过“活动监视器”查看所开启的原创 2021-08-09 08:54:19 · 1621 阅读 · 1 评论