我试图设计一个天青工人角色例程。工作角色轮询作业队列。对于每个作业,在作业消息中指定所需的线程数。作业正在运行可执行文件的实例。例如:可执行文件的名称是Rax.exe。 Rax.exe可以在不同数量的线程上运行。如果我们将其称为Rax.exe -T 2,它将创建两个线程。所以我们不必处理如何创建线程。我们只需用适当的命令行参数调用Rax.exe即可。我有超大型工作者实例。所以,我可以同时运行8个线程。我想尽可能地利用工人。我们可能有很多作业,每个作业都有不同数量的指定线程。Azure Worker角色设计
实施例:
Job Queue:
1 Rax.exe -T 3
2 Rax.exe -T 5
3 Rax.exe -T 1
4 Rax.exe -T 8
5 Rax.exe -T 4
在这个例子中,我们有5个作业。工作人员读取第一条消息并开始工作。这项工作消耗3个线程。一个工作者可以有8个线程,所以剩下的5个线程可以通过从队列中运行另一个工作来使用。
目前,我不知道如何在一个辅助角色内运行多个进程。我正在使用进程类的waitForExit方法。可执行文件的每个运行实例都会创建输出文件,因此我必须收集这些生成的文件。
我的问题:
1 - 我怎样才能异步启动多个进程,当他们退出的通知?我仍然在轮询工作队列时这么做。这种工作安排是一个难题吗?任何人都可以想出一个很好的启发式吗?
编辑: 我认为,估计每个工作所需的运行时间将会有所帮助。这种信息存在。有了这些信息,它能解决吗?
您能否解释为什么要创建额外的进程而不是使用并行任务API?这听起来很适合它。 – 2011-05-25 04:15:33