机器中的多任务与多进程

multi tasking vs multi process in a machine

我有点困惑。我有一些 jobs.I 可以在同一台机器上使用许多 windows 3 服务(例如 service1、service2、service3)来完成,或者我可以通过启动任务 3Task.Factory.StartNew(() => {//mytask});

我知道,对于任务,我在机器上只有一个进程,但对于许多服务,我有多个进程,但是使用系统资源时有什么区别。哪条路才是真路。

(所有这些服务 and/or 启动任务将作为消费者监听一些队列) (3只是一个比较的例子) (单个作业可能需要 3 分钟)

(过于简单且不完整的答案)

过程很昂贵:

  • 进程创建很多昂贵
  • 进程同步很多更昂贵且更难实施

但是

  • 当一个进程崩溃时,它不会影响可以继续处理其工作的其他进程。但是在一个任务中崩溃可能会导致整个进程崩溃,从而阻止其他任务处理它们的工作
  • 进程可以 运行 在不同的机器上,允许扩展更多的资源,而任务总是 运行 在同一台机器上竞争资源。

不同工艺:


上升:

耐久度:

当您在单独的进程中启动您的线程时,您的任何线程的 activity 都不会损害其他线程,因为它们使用自己的 virtual address space.

可扩展性:

当您在单独的应用程序中托管每个任务时,您可以将它们部署在不同的机器上 - 构建一个分布式独立系统。

跌幅:

资源浪费:

在不同进程中启动您的任务时,您会为每个进程分配虚拟地址 space,并且最终可能会有上下文切换,这对性能来说不是很好,因为您的机器正在保存核心状态并恢复它当进程返回上下文时。不仅如此。

可维护性下降:

如果您的任何服务相互依赖,您应该始终跟踪它们的可用性和连贯性。

一个进程和进程内的不同线程正好相反

你需要什么,由你决定。