.Net中的进程分配

时间:2010-03-09 10:13:46

标签: .net multithreading

我正在编写一些程序,它应该根据一直到达系统的输入同时执行计算。我正在考虑两种方法来分配“计算”过程:

  1. 在系统初始化中分配进程,将进程表中的id插入,每次我想执行计算时,我都会检查表中哪个进程是空闲的。 问题:我可以确定这些流程仅供我使用,操作系统是否使用它们?
  2. 不提前分配流程。每次计算时都要求操作系统进行免费处理。
  3. 我需要知道“计算”过程中的以下输入:

    1. 计算完成后,如果成功或失败
    2. 如果进程失败,我需要将计算分配给另一个进程
    3. 提前致谢。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

我认为你想要线程,而不是进程。我认为.NET有一个ThreadPool类,它可以满足你的需要。

答案 1 :(得分:0)

我不确定'读取系统'是什么意思所以我只是做一些你可以纠正的假设:

  • 处理输入从数据库或文件系统中提取
  • 您需要跟踪谁正在处理哪个项目
  • 计算的失败/成功仅取决于过程完成的事实,而不是某些可以检查的条件。

听起来这里有两件事。 首先,您需要为所有作业提供有效的排队机制,并且需要重新入队的失败作业。其次,您可能实际上只需要多个线程,而不是进程。

ThreadPool是一个很好的起点。您可以使用新工作项对新线程进行排队,如果该线程失败,则重新入队工作项。队列可以像.net中的T队列一样简单。但是检查线程安全性 - 您可能需要在队列上实现自己的锁定,以确保没有两个线程同时使项目出现。

如果没有关于任务和术语的更多信息,我无法帮助你。