Commit | Line | Data |
---|---|---|
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 | ||
15 | signature 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 | ||
44 | signature SYNC_VAR_EXTRA = | |
45 | sig | |
46 | include SYNC_VAR | |
47 | end |