portal Michała Hanćkowiaka
Begin main content
wm withdraw .; wm geo .output 379x366+15+15; wm geo .konsola 766x626+414+15;

source symul_lib.tcl; # ladowanie symulatora

# tworzymy graf komunikacyjny (w tym wypadku cykl)
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 run

fiber_iterate {
proc run {} {
  global id run kom

  if {$id==0} {wyslij 1 0}
  fiber yield; # oznacza koniec rundy

  while {$run} { # zmienna run pozwala zakonczyc dzialanie symulacji!!
    if {$kom(0)!=""} {
      #set x $kom(0)
      set x [czytaj 0]
      incr x
      wyslij 1 $x
    }
    fiber yield; # oznacza koniec rundy
  }
}
}

Inicjalizacja; # koniecznie trzeba to wywolac!!!

set licznik 0
proc wizualizacja {} {
  _puts "--- runda $::licznik ---"; incr ::licznik
  fiber_iterate {_puts "$id: $kom0, $kom1"}
}

# ... do tego miejsca mozna wszystko wykonac !!!!!!!!!!!!!

set licznikKom 0; set licznik 0; set_run 0; fiber yield; set_run 1; fiber restart
#fiber_iterate {set id_los [expr round(rand()*10000)]}
_puts ---; fiber_iterate {_puts "$id, $id_los"}

fiber error; # bledy na wierz

fiber yield; runda; wizualizacja; set licznikKom; # kolejne rundy










exit

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...