diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-03-31 02:11:03 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-03-31 02:11:03 -0400 |
| commit | 7a172be6213839a3d023ba21c3bafd7540a4bfe8 (patch) | |
| tree | 5646ba0e4c0690fe64711fb77658308541de695b /docs/mutexed.md | |
| parent | d3655740cc6a8e6c4788946af412065fb52f51dc (diff) | |
Remove threads and mutexed data from the language in favor of a
module-based approach
Diffstat (limited to 'docs/mutexed.md')
| -rw-r--r-- | docs/mutexed.md | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/docs/mutexed.md b/docs/mutexed.md deleted file mode 100644 index 97357f39..00000000 --- a/docs/mutexed.md +++ /dev/null @@ -1,34 +0,0 @@ -# Mutexed Data - -To serve the general case of synchronizing access to shared datastructures, -Tomo uses the `mutexed` keyword, which allocates a mutex and some heap memory -for a value. Access to the heap-allocated value's memory can only be obtained -by using a `holding` block. `holding` blocks ensure that the underlying mutex -is locked before entering the block and unlocked before leaving it (even if a -short-circuiting control flow statement like `return` or `stop` is used). Here -is a simple example: - -```tomo -nums := mutexed [10, 20, 30] - ->> nums -= mutexed [Int]<0x12345678> : mutexed([Int]) - -holding nums: - # Inside this block, the type of `nums` is `&[Int]` - >> nums - = &[10, 20, 30] : &[Int] - -thread := Thread.new(func(): - holding nums: - nums:insert(30) -) - -holding nums: - nums:insert(40) - -thread:join() -``` - -Without using a mutex, the code above could run into concurrency issues leading -to data corruption. |
