]> AND Private Git Repository - loba.git/commit
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)
commit0c4a3402a57c61218bf1d1c6d8c31f5c3e1482f9
treeadeacaee03feaf4d30f4353b88b1ba3547b5cc34
parentac9e5de4c0ff479ce265da01df4d53771e096d9d
Deadlock fix, and other changes.

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.
TODO
communicator.cpp
main.cpp
options.cpp
options.h
process.cpp
process.h