Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / cml / core-cml / sync-var.sig
CommitLineData
7f918cf1
CE
1(* sync-var.sig
2 * 2004 Matthew Fluet (mfluet@acm.org)
3 * Ported to MLton threads.
4 *)
5
6(* sync-var-sig.sml
7 *
8 * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
9 * COPYRIGHT (c) 1989-1991 John H. Reppy
10 *
11 * The implementation of Id-style synchronizing memory cells (I-structures
12 * and M-structures).
13 *)
14
15signature SYNC_VAR =
16 sig
17
18 type 'a ivar (* I-structure variable *)
19 type 'a mvar (* M-structure variable *)
20
21 exception Put (* raised on put operations to full cells *)
22
23 val iVar : unit -> 'a ivar
24 val iPut : ('a ivar * 'a) -> unit
25 val iGet : 'a ivar -> 'a
26 val iGetEvt : 'a ivar -> 'a CML.event
27 val iGetPoll : 'a ivar -> 'a option
28 val sameIVar : ('a ivar * 'a ivar) -> bool
29
30 val mVar : unit -> 'a mvar
31 val mVarInit : 'a -> 'a mvar
32 val mPut : ('a mvar * 'a) -> unit
33 val mTake : 'a mvar -> 'a
34 val mTakeEvt : 'a mvar -> 'a CML.event
35 val mTakePoll : 'a mvar -> 'a option
36 val mGet : 'a mvar -> 'a
37 val mGetEvt : 'a mvar -> 'a CML.event
38 val mGetPoll : 'a mvar -> 'a option
39 val mSwap : ('a mvar * 'a) -> 'a
40 val mSwapEvt : ('a mvar * 'a) -> 'a CML.event
41 val sameMVar : ('a mvar * 'a mvar) -> bool
42 end
43
44signature SYNC_VAR_EXTRA =
45 sig
46 include SYNC_VAR
47 end