进程的概念:应用以编码形式默认保存在硬盘上 打开之后 将应用加载到内存中之后 在内存中的这个程序 就是一个进程 对于ios来说 一个应用只能有一个进程 在pc端 一个应用可以有多个进程
线程是相对于进程而言的(相当于真正是干活的工人) 一个进程(相当于包工头) 创建多个线程后 省资源 真正干活的是线程(工人) 而不是进程(包工头)
进程之间的数据是相互独立的 资源是不共享的 想用的话 可以进行拷贝 但是 拷贝出来的东西地址是不一样的 比较占用内存资源
线程之间数据可以共享 (相当于干活的时候 共用一套工具) 但是可能出现不安全 比如说两个线程同时能共用一串字符串的时候 线程1 在对str进行写 但是线程2要对str进行读 这时候就会出现问题
在同步下载中 一个程序在运行中 如果遇到耗时操作(下载)时 主线程执行这段代码 就会出现假死的状态
在异步下载中 一个程序在运行中 如果遇到耗时操作(下载)时 主线程可以分出来一个子线程 让子线程执行下载的操作
CPU在执行多线程代码的时候 由于CPU的运行效率比较高 执行完一个线程的第一行代码 马上暂停当前执行 并进行存档(每一个线程都有一个自己的寄存器) 立即去执行另外一个线程的第一行代码 执行完后 进行读档 继续执行线程一的代码 循环执行 -----也就是说我们可以把每一个单位时间(比如说1毫秒)分割出来 去执行我们需要的任务 这样在一秒中就会有一千个线程被执行,这样我们把这一千个线程分配给多个应用程序 就可以达到多任务同时进行的效果