
GCD
文章平均质量分 78
lingjunjie
这个作者很懒,什么都没留下…
展开
-
GCD的Group,信号量,栅栏函数,source,单例的使用
如果“v == DLOCK_ONCE_DONE”执行return,如果dispatch_once还没被调用,返回_dispatch_once_callout,如果当前的任务在执行中就会调用_dispatch_once_wait栅栏函数dispatch_barrier_async 能够在同步队列中先执行完barrier之前的然后是barrier,再来barrier以后的任务。用例:Group主要调用到接口就是dispatch_group_create 创建group ,dispatch_gro原创 2022-06-14 00:08:33 · 386 阅读 · 0 评论 -
多线程底层探索下
当代码运行到这里时线程会死锁,接下来从源码观察通过汇编看到运行以后会来到这个方法__DISPATCH_WAIT_FOR_QUEUE__,然后打开源码然后再进一步看看_dq_state_drain_locked_by源码直接返回了_dispatch_lock_is_locked_by,参数是线程的id继续查看查看DLOCK_OWNER_MASK宏定义为:#define DLOCK_OWNER_MASK ((dispatch_lock)0xfffffffc)知道DLOCK_OWNER_MASK是原创 2022-06-12 18:24:46 · 161 阅读 · 0 评论 -
多线程-GCD 探索上
线程和进程的定义线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。进程想要执行任务,必须得有线程,进程至少要有一条线程。程序启动会默认开启一条线程这条线程被称为主线程或UI线程。进程是指系统中正在运行的一个程序每个进程之间都是独立的。每个进程均运行在其专用的受保护的内存空间内-通过mac的活动监视器可以查看所有开启的进程.........原创 2022-06-01 21:52:57 · 142 阅读 · 0 评论