我有一些长时间运行的任务,它们会大量消耗CPU和内存。 我应该在另一个线程或其他进程中运行它们吗? 每个选项的好处是什么?
答案 0 :(得分:1)
这取决于您尝试进行的操作。
除了Why should I use a thread vs. using a process?提到的内容之外,我想补充一点,线程共享它们所属进程的内存。另一方面,进程不共享内存。每个进程在堆栈上都有自己的内存空间。
如果您计划处理相同的数据(可能是部分操作),我建议您使用线程。让每个线程处理一大块数据。
如果操作完全不相关,请使用流程。我知道这有点模糊;但如果您不共享数据并且不要序列化操作,则可以使用进程。
通常,一个应用程序(进程)会产生多个线程。如果您有多个应用程序,则每个应用程序都是一个进程,并且有自己的地址空间。