线程和进程的区别
进程是系统资源分配最小的单位。
线程是程序执行最小的单位
进程有自己独立地址空间,每启动一个进程,系统都会为它分配地址空间,建立数据表来维护代码段、堆栈和数据块,这种操作非常昂贵。
线程是共享进程中的数据的,使用相同的地址空间,因此cpu切换到一个线程花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
进程间的通讯较为复杂,使用:无名管道、有名管道、信号、共享内存、消息队列、信号量
线程间的通讯十分方便,因为使用的是共享全局变量、静态变量等数据,使用互斥量、读写锁、自旋锁、线程信号、条件变量
多进程运行时,单一进程死亡,并不会影响其他进程;
多线程运行时,单一线程死亡,会导致整个进程死亡。
进程之间不能对其他进程施加控制;
线程之间可以互相控制。
线程如何实现同步和通信
线程访通信可以通过:
全局变量
io通讯
自定义消息
同步通过使用下面的来控制:
互斥锁
信号量
临界区
进程如何实现通信
进程之间无法直接访问对方的内存,需要一个中间介质:
消息队列
管道
共享内存
套接字
参考资料