多进程对应的是fork函数,而多线程对应的是thread函数。
fork 与 thread 的区别:
fork开辟新进程,使用了新的资源空间,父子进程对变量的修改互不影响。由于每个进程都是独立的个体,进程间无法直接进行通信。
thread开辟新线程,本质上还是对同一块空间进行调用,会出现死锁等情况。同时,由于使用的是同一块内存空间,所以可以直接进行传输和通信。
*进程是资源调度的最小单位,线程是进程的最小单位。
想实现进程间的通信?
1. 传统进程通信方法:管道、信号
2.systemV IPC对象:共享内存 [最常见的方法,但同线程一样会造成死锁问题] 、消息队列、信号量、POSIX信号量
3.BSD:套接字