Golo has a DynamicVariable type that mimics the eponymous class from the Scala standard library.
A dynamic variable has inheritable thread-local semantics: updates to its value are confined to the current thread and its future child threads.
Given the following code:
let dyn = DynamicVariable("Foo")
println(dyn: value())
let t1 = Thread({
dyn: withValue(666, {
println(dyn: value())
})
})
let t2 = Thread({
dyn: withValue(69, {
println(dyn: value())
})
})
t1: start()
t2: start()
t1: join()
t2: join()
println(dyn: value())one gets an output similar to:
Foo 69 666 Foo
with the 69 and 666 swapping order over runs.