长时间运行的任务,我应该在另一个线程或其他进程中运行它们吗?

时间:2012-02-07 19:12:37

标签: multithreading performance process long-running-processes inter-process-communicat

  

可能重复:
  Why should I use a thread vs using a process?

我有一些长时间运行的任务,它们会大量消耗CPU和内存。 我应该在另一个线程或其他进程中运行它们吗? 每个选项的好处是什么?

1 个答案:

答案 0 :(得分:1)

这取决于您尝试进行的操作。

除了Why should I use a thread vs. using a process?提到的内容之外,我想补充一点,线程共享它们所属进程的内存。另一方面,进程不共享内存。每个进程在堆栈上都有自己的内存空间。

如果您计划处理相同的数据(可能是部分操作),我建议您使用线程。让每个线程处理一大块数据。

如果操作完全不相关,请使用流程。我知道这有点模糊;但如果您不共享数据并且不要序列化操作,则可以使用进程。

通常,一个应用程序(进程)会产生多个线程。如果您有多个应用程序,则每个应用程序都是一个进程,并且有自己的地址空间。