线程与进程的区别(多进程与多线程)
资源:
进程采用虚拟空间+用户态/内核态机制,所以就导致进程与进程之间是互相独立的,各自的资源不可见。
在同一进程中的各个线程都可以共享该进程所拥有的资源。
多进程之间资源是独立的,多线程之间资源是共享的。
通信:
由于进程之间是互相独立的,需要使用各种IPC通信机制,保障多个进程协同工作。
同一进程中的各个线程共享该进程所拥有的资源,线程间可以直接读写进程数据段来进行通信,但需要线程同步和互斥手段的辅助,以保证数据的一致性。
多进程之间资源是独立的,所以需要通信,多线程之间资源是共享的,所以需要同步和互斥。
调度:
无论系统采用什么样的线程调试策略,线程上下文切换都比进程上下文切换要快得多。
身份:
进程是个资源单位,线程是个执行单位,并且线程是进程的一部分,线程需要进程安身立命,进程也需要线程当牛做马。