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