tomo/docs/mutexed.md

557 B

Mutexed Data

To serve the general case of synchronizing access to shared datastructures, Tomo uses the mutexed keyword, which returns a function which can be used to ensure that all access to a datastructure is guarded by a mutex:

with_nums := mutexed [10, 20, 30]

thread := Thread.new(func():
    with_nums(func(nums:&[Int]):
        nums:insert(30)
    )
)

with_nums(func(nums:&[Int]):
    nums:insert(40)
)
    
thread:join()

Without having a mutex guard, the code above could run into concurrency issues leading to data corruption.