在出现以下情况时,我应该使用哪种方法或想法进行模拟。
有主服务器,worker1(主机1)和worker2(主机2)。当前,worker1正在执行某些数据,但是worker2是空闲的。主机必须向instruction
worker2发送有关从worker1下载数据并开始执行它们的信息。
这个想法是messageTask
从主机发送messageTask
到worker2-> worker2发送task(name, flopsamount, byteSize)
给worker1- > worker1发送给worker2-> worker2接收并执行它。
但是messageTask
,如果worker1忙于执行工作,worker1如何从worker2接收task
呢?worker1在执行任务时如何发送数据?还是有另一种方法可以让worker2从忙碌的worker1下载数据?
更新这是worker2的一段代码。
MessageTask messageTask = new MessageTask();
messageTask.dsend(mailbox_worker1)
对于工人1
try {
task.execute(); // Currently worker1 is here, in other words, worker1 is exectuing some another task
} catch (TaskCancelledException e) {
}
worker1如何向receive
messageTask消息并send
返回到worker2真实数据(在不中断执行其当前任务的情况下)?
更新
它是正确的deployment.xml吗?
<process host="Tier1_1" function="LHCb.Process1">
<argument value="1"/> <!-- Input mailbox -->
</process>
<process host="Tier1_1" function="LHCb.Process2">
<argument value="1"/> <!-- Input mailbox -->
</process>
进行交流时,至少有两种方法可以做事。您可以使用分离的发送,这意味着您不必担心通信是否有效,也可以不关心异步通信。
此目录中有第一种机制的示例:examples / java / async / dsend,而Java中尚未例示另一种机制。您现在必须检查C示例。
现在,在更新的部分中,您想在执行某件事时做一些事情。由于还没有异步执行之类的东西,您将不得不在同一主机上启动另一个进程来处理通信,而第一个主机则在计算内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句