进程和线程
- 进程是系统拥有资源的基本单位,线程是系统调度和分派的基本单位
- 进程之间可以并发执行,一个进程的多个线程也可以并发执行
- 进程在创建、撤销、切换的时系统开销远大于线程
- 线程本身不拥有资源,但是可以访问其隶属的进程资源
死锁:指的是两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,如果无外力作用,那么它们都将无法推进下去。
死锁的四个必要条件:
- 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用
- 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
- 不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
- 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系。
预防死锁:破坏四个必要条件
进程之间的通信:管道、消息队列、共享内存、信号量、socket、信号
线程间的通信方式:synchronize、while轮询、wait,notify机制