本文介绍: 进程与线程的关系进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程,称为主线程)。一个进程(程序)的所有任务都在线程中执行,同一时间,CPU只能处理1条线程,只有1条线程在工作(执行),多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。NSThreadNSThread是OC线程的基础类,可以通过sta
进程与线程的关系
NSThread
NSThread是OC线程的基础类,可以通过start sleep cancel控制线程执行情况。
GCD
GCD中有2个核心概念:任务和队列
任务
同步:只能在当前线程中执行任务,不具备开启新线程的能力,任务立刻马上执行,会阻塞当前线程并等待 Block中的任务执行完毕,然后当前线程才会继续往下运行
异步:可以在新的线程中执行任务,具备开启新线程的能力,但不一定会开新线程,当前线程会直接往下执行,不会阻塞当前线程
队列
判定一些操作往一个队列中添加时如何执行,先看是往串行还是并行队列中加任务,如是串行必然是顺序执行的,如果是并行异步才会交叉执行。
//全局并发队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 串行队列
dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL);
// 并发队列
dispatch_queue_t queue1 = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);
栅栏函数可以控制任务执行的顺序,栅栏函数之前的执行完毕之后,执行栅栏函数,然后在执行栅栏函数之后的(并发队列)
dispatch_barrier_async(queue, ^{ });
队列组
当有多个异步任务的时候,组内全部执行完毕再执行dispatch_group_notify可以起到监听作用,控制业务流程。
信号量
NSOperationQueue
读写锁
互斥锁,模拟抢票,多个线程同时访问和改变一个变量
一个进程的内存分配
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。