c# - 机器中的多任务与多进程
问题描述
我有点困惑。我有一些工作。我可以在同一台机器上使用许多 Windows 3服务,如 service1、service2、service3,或者我可以通过启动 Task 3次 来完成这项工作Task.Factory.StartNew(() => {//mytask});
我知道,对于任务,我在机器上有一个进程,但是对于许多服务,我有多个进程,但是使用系统资源时有什么区别。哪条路才是真路。
(所有这些服务和/或启动任务将作为消费者侦听一些队列)(并且 3 只是一个比较示例)(单个作业可能需要 3 分钟)
解决方案
不同的工艺:
UPS:
耐用性:
当您在单独的进程中启动线程时,没有其他线程会受到任何线程的活动的损害,因为它们使用自己的虚拟地址空间。
可扩展性:
当您在单独的应用程序中托管每个任务时,您可以将它们部署在不同的机器上——创建一个分布式独立系统。
下降:
资源浪费:
通过在不同的进程中启动任务,您为它们中的每一个分配虚拟地址空间,并且最终可能会有上下文切换,这对性能来说不是很好,因为您的机器正在保存核心状态并在进程返回到上下文时恢复它。不仅如此。
可维护性降低:
如果您的任何服务相互依赖,您应该始终跟踪它们的可用性和连贯性。
对于一个进程和进程中的不同线程,反之亦然。
您需要什么由您决定。
推荐阅读
- c# - how to remove WCF service virtual directory in IIS
- arrays - 根据标准创建动态数组并粘贴到工作表
- sed - 如何使用 sed 将字符串替换为变量字符串?
- c# - 通用基础,协方差
- mysql - 安装 mysql2 (0.3.21) 时出错,Bundler 无法继续。macOS 高山脉
- moshi - Moshi 错误路径 $.foo.bar 处的预期名称
- c - SSE 操作在 2D 数组上实现循环,其中每个输出取决于包含它的 3x3 正方形(生命游戏)
- x86 - 没有仿真引导操作系统
- c - Xcode 链接器错误(重复符号),而 gcc 工作正常
- java - CursorIndexOutOfBoundsException 错误 - 数据库 android