diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/kernel/Lifecycle.ml | 7 | ||||
| -rw-r--r-- | lib/kernel/Lifecycle.mli | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/kernel/Lifecycle.ml b/lib/kernel/Lifecycle.ml index bf0b544..ac6bb20 100644 --- a/lib/kernel/Lifecycle.ml +++ b/lib/kernel/Lifecycle.ml @@ -14,6 +14,13 @@ class null = method release = () end +class exclusive = + object + val taken = Atomic.make false + method reference = Atomic.compare_and_set taken false true + method release = Atomic.set taken false + end + class virtual counted = object (self) val references = Atomic.make 1 diff --git a/lib/kernel/Lifecycle.mli b/lib/kernel/Lifecycle.mli index fa3abee..d4ef178 100644 --- a/lib/kernel/Lifecycle.mli +++ b/lib/kernel/Lifecycle.mli @@ -9,6 +9,7 @@ class type virtual controlled_lifecycle = object end class null : lifecycle +class exclusive : lifecycle class virtual counted : controlled_lifecycle (** stands for [inner], carrying what it carries, while holding a |
