仿真有一个master
和七个workers
。当工作人员结束执行数据时,他们会执行关于完成执行的dsend
messageTasks
到master
。SimGrid。异步通信和故障链接
getHost().setProperty("busy", "no");
ReleaseTask releaseTask = new ReleaseTask(getHost().getName());
releaseTask.dsend("Master");
链接连接worker1
和master
已损坏。它是link1.fail文件。
PERIODICITY 2
0 1
1 0
我预计,只有一个releaseTask
(从worker1)不能达到master
。但不幸的是,没有releaseTasks
(来自其他工作人员)实现master
。出现此错误警告:
[13.059397] /builds/workspace/SimGrid-Multi/build_mode/Debug/node/simgrid-ubuntu-trusty-64/build/SimGrid-3.13/src/simix/smx_global.cpp:554: [simix_kernel/CRITICAL] Oops ! Deadlock or code not perfectly clean.
[13.059397] [simix_kernel/INFO] 16 processes are still running, waiting for something.
法师这样的方式得到task
:
Task listenTask = Task.receive("Master");
当链路连接worker1
和master
不破,所有的模拟工作正常。
我该如何避免这个问题?
修订
我platform.xml
文件:
<link id="0_11" state_file="linkfailures/0_11.fail" bandwidth="3.430125Bps" latency="4.669142ms"/>
0_11.fail
文件:
PERIODICITY 2
0 1
1 0
工人开始dsend
一个MessageTask
在6.94 s到掌握。传输时间为0.07秒。但在7.00秒。连接主人和工人的链接开始被打破。我想主人继续永恒的“接收”数据和错误发生。但如何处理呢?