![如果线程只是另一个进程,它如何减少 CPU 的工作量并处理抖动?](https://linux22.com/image/1541363/%E5%A6%82%E6%9E%9C%E7%BA%BF%E7%A8%8B%E5%8F%AA%E6%98%AF%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%EF%BC%8C%E5%AE%83%E5%A6%82%E4%BD%95%E5%87%8F%E5%B0%91%20CPU%20%E7%9A%84%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%B9%B6%E5%A4%84%E7%90%86%E6%8A%96%E5%8A%A8%EF%BC%9F.png)
当他们说线程是轻量化工艺?如果它只是另一个进程,它如何减少CPU的工作量?
答案1
线程不仅仅是另一个进程。一旦您理解了进程和线程是什么,您的问题就应该可以得到解答。
进程可以比作人类家庭,线程是其成员。进程提供环境并管理线程使用的资源。进程本身不能做任何事情,它所做的一切都是由其成员线程完成的。进程只是线程生活和工作的家园。进程必须至少有一个线程才能存在。当进程的最后一个线程终止时,操作系统将销毁该进程并释放它正在使用的所有资源。没有独立线程这样的东西。它必须是进程的成员。
通常,应用程序由一个进程组成,而进程本身又由一个或多个线程组成。大型应用程序有时会有多个进程。操作系统会尽力将进程彼此隔离,以防止意外或恶意干扰。操作系统让每个进程都产生一种错觉,即它在计算机中单独运行。它必须做一些实际工作才能知道其他进程的存在。进程可以共享资源并协同工作,但开发人员必须努力才能实现这一点。这不是自然状态。
线程旨在共享资源并协同工作。只有一个线程的进程最容易管理,但多个线程提供了更大的灵活性和功能。大型应用程序几乎总是使用多个线程。这需要开发人员的工作来确保它们协调工作并且不会互相干扰。例如,一个线程读取数据,而另一个线程正在修改数据。结果将是不可预测的。
线程比进程更轻量,因为它们没有进程开销。这些开销主要是内存,对 CPU 的影响很小,除非创建进程时(而且只发生一次)。在进程中创建新线程通常比创建整个新进程更有效率。但出于实际原因,后者通常是必要的。