进程和线程

时间:2009-08-25 06:05:51

标签: linux

进程和线程性能如何根据timslice而变化(大约需要多长时间才能执行)。在哪种情况下我们将使用线程而不是进程。

1 个答案:

答案 0 :(得分:9)

我想将您的问题改写为:在什么情况下,单个应用程序应该使用多个线程,以及在什么情况下应该使用多个进程呢?

在这个问题中,时间片根本不重要:今天的操作系统只调度线程,并将“普通”进程视为具有单个线程。

性能方面的问题是创建开销:创建进程通常比创建线程更昂贵。多处理应用程序避免了使用池的成本,即它们很少创建新进程,但在完成某些任务时重用它们。由于线程创建仍然很昂贵,人们通常会对线程做同样的事情。

通信开销也很重要:在线程中,您可以轻松共享内存;在进程中,您通常复制内容(例如使用管道)。有一些方法可以跨进程共享内存,但这些方法相当难以使​​用。

因此,一般来说,线程应该比进程更快。为什么人们仍在使用流程?因为它们是更简单的编程模型。由于线程中的共享内存,很容易出错,并且库/ API不是线程安全。使用流程可以避免缺乏线程安全性。