Rozproszone_moje_zad/TEMAT_A/zad1a.tcl

103 lines
1.6 KiB
Tcl

load ./q3.so
source symul_lib.tcl;
set liczbaWierz 5
set sasiedzi(0) {4 1}
set sasiedzi(1) {0 2}
set sasiedzi(2) {1 3}
set sasiedzi(3) {2 4}
set sasiedzi(4) {3 0}
fiber create $liczbaWierz {
set lider ?;
wyslij 0 $id;
wyslij 1 $id;
fiber yield;
while {$run} {
if {$kom(0)!="" && $kom(1)!=""} {
set x ?;
if {$kom(0) > $kom(1)} {
set x $kom(0);
if {$lider==1} {
} elseif {$x==0} {
wyslij 1 0;
set lider 0;
} elseif {$x>$id} {
wyslij 1 $x;
} elseif {$x==$id} {
set lider 1;
wyslij 0 0;
wyslij 1 0;
} elseif {$x < $id} {
}
fiber yield;
} else {
set x $kom(1);
if {$lider==1} {
} elseif {$x==0} {
wyslij 0 $x;
set lider 0;
} elseif {$x>$id} {
wyslij 0 $x;
} elseif {$x==$id} {
set lider 1;
wyslij 0 0;
wyslij 1 0;
} elseif {$x < $id} {
}
fiber yield;
}
} elseif {$kom(0)!=""} {
set x $kom(0);
if {$lider==1} {
} elseif {$x==0} {
wyslij 1 0;
set lider 0;
} elseif {$x>$id} {
wyslij 1 $x;
} elseif {$x==$id} {
set lider 1;
wyslij 0 0;
wyslij 1 0;
} elseif {$x < $id} {
}
fiber yield;
} else {
set x $kom(1);
if {$lider==1} {
} elseif {$x==0} {
wyslij 0 $x;
set lider 0;
} elseif {$x>$id} {
wyslij 0 $x;
} elseif {$x==$id} {
set lider 1;
wyslij 0 0;
wyslij 1 0;
} elseif {$x < $id} {
}
fiber yield;
}
}
}
Inicjalizacja;
proc wizualizacja {} {
fiber_iterate {_puts "id: $id: lider: $lider, kom0: $kom0, kom1: $kom1"}
}
fiber yield; runda; wizualizacja