]> AND Private Git Repository - loba.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Deadlock fix, and other changes.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 21 Dec 2010 16:26:44 +0000 (17:26 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 21 Dec 2010 17:03:50 +0000 (18:03 +0100)
Fix a deadlock occuring when there was no load anymore in the system.
Each remaining process had nothing to compute, nor to send to their
neighbors, and were blocked waiting for an incoming message.

The fix consists in:
* adding a shared global variable total_load_running, the sum of loads
  currently in the system ; and
* ensuring this variable is always up-to-date ; and
* making processes terminate if total_load_running is null.

The use of a global variable is not satisfactory, but it is good
enough for now.

It is also verified, at the end of the simulation, that
total_load_running is null.

Other important changes in this commit are:
* process::receive() now consumes all pending messages (it used to
  consume only one).
* The iteration number is only incremented when there is something to
  compute (load > 0.0).

Note: bookkeeping version may be broken.


No differences found