区别
多进程是指在操作系统中同时运行多个独立的进程。每个进程有独立的地址空间,资源独立分配,彼此之间相互隔离。多进程之间通信的主要方式是通过进程间通信机制,如管道、消息队列、共享内存等。
多线程是在同一个进程中创建多个线程并行执行。这些线程共享同一个进程的地址空间和资源,彼此之间可以直接访问共享数据。线程之间通信更为简单,可以直接使用全局变量或者通过线程同步机制来实现。
创建、撤销一个新线程系统开销小。两个线程间的切换系统开销小。
ps:
线程之间可共享的资源有:全局变量、静态变量或动态分配的堆内存中。
独享的资源有:线程的栈,用于存储局部变量、函数调用信息等、线程的ID、寄存器组的值:当线程切换时,必须将原有的线程的寄存器集合的状态保存,以便重新切换时得以恢复。
应用场景
多进程适用于需要完全隔离的任务,每个进程拥有独立的资源和地址空间,互不干扰。
多进程适用于需要稳定性和可靠性的应用,一个进程崩溃不会影响其他进程。
多线程适用于需要共享数据和共享资源的任务,线程之间可以更方便地进行通信和协作。
多线程可以更有效地利用系统资源,线程的创建和切换开销较小。