机器中的多任务与多进程
multi tasking vs multi process in a machine
我有点困惑。我有一些 jobs.I 可以在同一台机器上使用许多 windows 3 服务(例如 service1、service2、service3)来完成,或者我可以通过启动任务 3 次 Task.Factory.StartNew(() => {//mytask});
我知道,对于任务,我在机器上只有一个进程,但对于许多服务,我有多个进程,但是使用系统资源时有什么区别。哪条路才是真路。
(所有这些服务 and/or 启动任务将作为消费者监听一些队列)
(3只是一个比较的例子)
(单个作业可能需要 3 分钟)
(过于简单且不完整的答案)
过程很昂贵:
- 进程创建很多昂贵
- 进程同步很多更昂贵且更难实施
但是
- 当一个进程崩溃时,它不会影响可以继续处理其工作的其他进程。但是在一个任务中崩溃可能会导致整个进程崩溃,从而阻止其他任务处理它们的工作
- 进程可以 运行 在不同的机器上,允许扩展更多的资源,而任务总是 运行 在同一台机器上竞争资源。
不同工艺:
上升:
耐久度:
当您在单独的进程中启动您的线程时,您的任何线程的 activity 都不会损害其他线程,因为它们使用自己的 virtual address space.
可扩展性:
当您在单独的应用程序中托管每个任务时,您可以将它们部署在不同的机器上 - 构建一个分布式独立系统。
跌幅:
资源浪费:
在不同进程中启动您的任务时,您会为每个进程分配虚拟地址 space,并且最终可能会有上下文切换,这对性能来说不是很好,因为您的机器正在保存核心状态并恢复它当进程返回上下文时。不仅如此。
可维护性下降:
如果您的任何服务相互依赖,您应该始终跟踪它们的可用性和连贯性。
一个进程和进程内的不同线程正好相反
你需要什么,由你决定。
我有点困惑。我有一些 jobs.I 可以在同一台机器上使用许多 windows 3 服务(例如 service1、service2、service3)来完成,或者我可以通过启动任务 3 次 Task.Factory.StartNew(() => {//mytask});
我知道,对于任务,我在机器上只有一个进程,但对于许多服务,我有多个进程,但是使用系统资源时有什么区别。哪条路才是真路。
(所有这些服务 and/or 启动任务将作为消费者监听一些队列) (3只是一个比较的例子) (单个作业可能需要 3 分钟)
(过于简单且不完整的答案)
过程很昂贵:
- 进程创建很多昂贵
- 进程同步很多更昂贵且更难实施
但是
- 当一个进程崩溃时,它不会影响可以继续处理其工作的其他进程。但是在一个任务中崩溃可能会导致整个进程崩溃,从而阻止其他任务处理它们的工作
- 进程可以 运行 在不同的机器上,允许扩展更多的资源,而任务总是 运行 在同一台机器上竞争资源。
不同工艺:
上升:
耐久度:
当您在单独的进程中启动您的线程时,您的任何线程的 activity 都不会损害其他线程,因为它们使用自己的 virtual address space.
可扩展性:
当您在单独的应用程序中托管每个任务时,您可以将它们部署在不同的机器上 - 构建一个分布式独立系统。
跌幅:
资源浪费:
在不同进程中启动您的任务时,您会为每个进程分配虚拟地址 space,并且最终可能会有上下文切换,这对性能来说不是很好,因为您的机器正在保存核心状态并恢复它当进程返回上下文时。不仅如此。
可维护性下降:
如果您的任何服务相互依赖,您应该始终跟踪它们的可用性和连贯性。
一个进程和进程内的不同线程正好相反
你需要什么,由你决定。