aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Lifecycle.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/Lifecycle.ml')
-rw-r--r--lib/kernel/Lifecycle.ml7
1 files changed, 7 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