25 lines
557 B
Markdown
25 lines
557 B
Markdown
|
# 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:
|
||
|
|
||
|
```tomo
|
||
|
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.
|