portal Michała Hanćkowiaka
Begin main content
wm geom .konsola 588x761+440+63; wm geom .output 348x512+83+62; wm withdraw .

## symul synch - przyklad
#
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}
  #% 3 0

fiber create $liczbaWierz run

fiber_iterate {
proc run {} {
  global id run kom0 kom1

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

  while {$run} { # zmienna run pozwala zakonczyc dzialanie symulacji!!
    if {$kom0!=""} {
      set x $kom0
      incr x
      wyslij 1 $x
    }
    fiber yield; # oznacza koniec rundy
  }
}
}

Inicjalizacja; # koniecznie trzeba to wywolac!!!

proc wizualizacja {} {
  _puts "---"
  fiber_iterate {_puts "$id: $kom0, $kom1"}
}

# ... do tego miejsca mozna wszystko wykonac

_puts ---; fiber_iterate {_puts "$id, $id_los"}


#set_run 0; fiber yield; set_run 1; fiber restart
#fiber_iterate {set id_los [expr round(rand()*10000)]}
  # + restart i zmiana id_los

fiber error

#fiber_dbg_proc 0 run
#fiber_dbg_proc 1 run

fiber yield; runda; wizualizacja; # uruchamiamy runde






exit

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