进程
用来对应一个应用程序,每一个进程对应一定的内存地址空间,每个进程都有自己的内存空间,不同的进程运行时不会相互干扰
进程的缺点
进程做事情的时候,里面有很多子任务,只能逐个的去执行子任务
线程的诞生
为了将进程中的子任务分开执行,让一个线程执行一个子任务,这样一个进程就会拥有多个线程,每个线程负责一个独立的子任务。
进程让操作系统的并发性成为可能
线程让进程内部并发成为可能
一个进程虽然包括多个线程,但是这些线程是共同享有进程的资源和地址空间
进程是操作系统进行资源分配的基本单位
线程是操作系统进行调度的基本单位
多线程会遇到的核心问题,如果多个线程要同时访问某个资源,要怎么处理?
锁
代表一个线程使用某个共享内存时,其他线程必须等它结束,才能使用这一块内存。
互斥锁
防止多个线程同时读写某一内存区域
信号量
某些内存区域,只能给固定数目的线程使用。叫做信号量。锁是信号量=1的特殊情况。
总结
多进程形式,允许多个任务同时运行
多线程方式,每个任务分成不同的子任务部分运行