Proposing Java and C# a
new Monitor semantics and
queuing policies:
giving priority to signalled processes as in Ada
Several dining philosophers
implementations
are provided and compared
The
implemented solutions are:
1_CHOPCODE MONITORS
CHOP GLOBAL RF ADA1
CHOP GLOBAL RF ADA11
CHOP GLOBAL RF JAVA1
CHOP GLOBAL RS ADA
CHOP GLOBAL UF JAVA
- a.
an
Ada simulation
of the
Java deadlock free and fair implementation with Ada monitor
semantics simulation
-
CHOP GLOBAL RF
ADA1
- b.
an
Ada simulation
of the
Java deadlock free and fair implementation with Ada monitor
semantics simulation
-
CHOP GLOBAL RF
ADA1 this implementation is more efficient and
has a better concurrency ratio
- c.
an
Ada simulation
of the
Java deadlock free and fair implementation with Java monitor
semantics simulation
-
CHOP GLOBAL RF
JAVA1
-
- d. an Ada global allocation of Chops
reliable but unfair (using
Ada monitor semantics)
-
CHOP GLOBAL RS ADA tuned for almost starvation
- e.
an
Ada simulation
of the
Java deadlock prone implementation (Java
monitor semantics simulation)
-
CHOP GLOBAL UF
JAVA
The implementations have been simulated and
instrumented
The full program is present in
1_CHOPCODE MONITORS and is composed
of:
chop.adb which is a dummy code
which must be replaced by the experimented one stored in another
folder
chop.ads
diner.adb which is the main program
global.adb
global.ads
monitoring.adb which contains the number of runs (MaxStrokes) and the
individual messages (here replaced by null statement in procedure
Message)
monitoring.ads
protected_machine.adb
protected_machine.ads
The main program is diner.adb
Once compiled (with GNAT for example), just run ./diner
The execution results
The results are recorded in each
file named
ConcurrencyEfficiencyResults.txt
Last update: April 18, 2006