仿真有一個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秒。連接主人和工人的鏈接開始被打破。我想主人繼續永恆的「接收」數據和錯誤發生。但如何處理呢?