1、为什么要有线程
进程无法实现一段时间内并发执行
案例:
MP3播放器软件:
步骤:
1.读取文件
2.分析数据
3.播放声音
单进程代码:
main() { while(1){ read(); decopress(); play(); } }
缺点:read的速度远远比其他两个慢,会导致这个进程断断续续的
于是分成三个进程:
main() { while(1){ read(); } } main() { while(1){ decopress(); } } main() { while(1){ play(); } }
由于三个进程相互之间是独立的,无法访问别人的地址空间 ,于是引入线程概念
1.实体之间可以并发的执行
2.实体之间共享相同的地址空间
把上面三个分成3个线程即可
线程与进程比较
1.进程是资源分配的单位,线程是cpu调度单位
2.线程没有PCB,是TCB thread
3.进程含有多个线程
4.线程只属于一个进程,一个进程有多个线程,且至少一个线程
进程包括 资源管理+线程