3 val atomicBegin
: unit
-> unit
4 val atomicEnd
: unit
-> unit
5 val doAtomic
: (unit
-> unit
) -> unit
7 structure Critical
: CRITICAL
=
9 structure Thread
= MLton
.Thread
11 val atomicBegin
= Thread
.atomicBegin
12 val atomicEnd
= Thread
.atomicEnd
13 fun doAtomic f
= (atomicBegin (); f (); atomicEnd ())
18 structure Signal
= MLton
.Signal
19 structure Itimer
= MLton
.Itimer
21 val alrmHandler
= fn t
=> t
23 Itimer
.set (Itimer
.Real,
26 fun setAlrmHandler h
=
27 Signal
.setHandler (Itimer
.signal Itimer
.Real, h
)
30 Critical
.doAtomic (fn () => TextIO.print s
)
34 val () = setAlrmHandler (Signal
.Handler
.handler alrmHandler
)
35 val () = setItimer (Time
.fromMilliseconds
10)
39 then OS
.Process
.exit OS
.Process
.success
41 val i
' = (Int.toString i
) ^
"\n"