Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
atomic_.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46[@@@ifge 4.12] include Atomic [@@@else_] type 'a t = { mutable x: 'a } let[@inline] make x = { x } let[@inline] get { x } = x let[@inline] set r x = r.x <- x let[@inline never] exchange r x = (* atomic *) let y = r.x in r.x <- x; (* atomic *) y let[@inline never] compare_and_set r seen v = (* atomic *) if r.x == seen then ( r.x <- v; (* atomic *) true ) else false let[@inline never] fetch_and_add r x = (* atomic *) let v = r.x in r.x <- x + r.x; (* atomic *) v let[@inline never] incr r = (* atomic *) r.x <- 1 + r.x (* atomic *) let[@inline never] decr r = (* atomic *) r.x <- r.x - 1 (* atomic *) [@@@endif]