长时间运行的任务,我应该在另一个线程或另一个进程中运行它们吗? [复制]
Posted
技术标签:
【中文标题】长时间运行的任务,我应该在另一个线程或另一个进程中运行它们吗? [复制]【英文标题】:Long running tasks, should I run them in another thread or another process? [duplicate] 【发布时间】:2012-02-07 19:12:36 【问题描述】:可能重复:Why should I use a thread vs using a process?
我有一些长时间运行的任务,它们会大量消耗 CPU 和内存。 我应该在另一个线程或另一个进程中运行它们吗? 每个选项的好处是什么?
【问题讨论】:
这取决于您所说的“长时间运行”... 10 秒、20 分钟、5 天? 【参考方案1】:这取决于您要执行的操作。
除了Why should I use a thread vs. using a process? 提到的内容之外,我想补充一点,线程共享它们所属的进程的内存。另一方面,进程不共享内存。每个进程在栈上都有自己的内存空间。
如果您打算处理相同的数据(可能是对部分数据进行操作),我建议您使用线程来执行此操作。让每个线程处理一大块数据。
如果操作完全不相关,请使用流程。我知道这有点含糊;但是如果你不共享数据并且操作不被序列化,你可以使用进程。
通常,一个应用程序(进程)会产生多个线程。如果您有多个应用程序,每个应用程序都是一个进程,并且有自己的地址空间。
【讨论】:
以上是关于长时间运行的任务,我应该在另一个线程或另一个进程中运行它们吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章