Posted to tcl by sebres at Mon Jan 07 16:48:46 GMT 2019view raw
- # This could be minimally invasive implementation of env per interp/thread,
- # with "certain" backwards compatibility (at least on read)...
- # -------------------------------------------------------------------------
- # global_env - global env array (like in current tcl-implementation)
- # env - local interp/thread env, with automatical mirroring/merging
- # from global env (local wins on global) protected by epoch's
- # -------------------------------------------------------------------------
- % puts "[thread::id -hex]: [array get env]"
- 2A84: a a-123 b b-234
- % puts "[thread::id -hex]: [array get global_env]"
- 2A84: a a-123 b b-234
- % set env(c) [thread::id -hex]
- 2A84
- % set global_env(d) d-global
- d-global
- % puts "[thread::id -hex]: [array get env]"
- 2A84: d d-global a a-123 b b-234 c 2A84
- % puts "[thread::id -hex]: [array get global_env]"
- 2A84: d d-global a a-123 b b-234
- % set t1 [thread::create]
- % thread::send $t1 {return "[thread::id -hex]: [array get env]"}
- 251C: d d-global a a-123 b b-234
- % thread::send $t1 {set env(c) [thread::id -hex]}
- 251C
- % thread::send $t1 {return "[thread::id -hex]: [array get env]"}
- 251C: d d-global a a-123 b b-234 c 251C
- % puts "[thread::id -hex]: [array get env]"
- 2A84: d d-global a a-123 b b-234 c 2A84
- % set t2 [thread::create]
- % thread::send $t2 {return "[thread::id -hex]: [array get env]"}
- 2230: d d-global a a-123 b b-234