1 (* Title: Pure/ML-Systems/multithreading.ML
5 Dummy implementation of multithreading setup.
8 signature BASIC_MULTITHREADING =
10 val NAMED_CRITICAL: string -> (unit -> 'a) -> 'a
11 val CRITICAL: (unit -> 'a) -> 'a
14 signature MULTITHREADING =
16 include BASIC_MULTITHREADING
18 val tracing: int -> (unit -> string) -> unit
20 val max_threads: int ref
21 val max_threads_value: unit -> int
22 val no_interrupts: Thread.threadAttribute list
23 val regular_interrupts: Thread.threadAttribute list
24 val with_attributes: Thread.threadAttribute list ->
25 (Thread.threadAttribute list -> 'a -> 'b) -> 'a -> 'b
26 val self_critical: unit -> bool
27 val serial: unit -> int
30 structure Multithreading: MULTITHREADING =
35 val trace = ref (0: int);
38 val available = false;
39 val max_threads = ref (1: int);
40 fun max_threads_value () = 1: int;
43 [Thread.EnableBroadcastInterrupt false, Thread.InterruptState Thread.InterruptDefer];
45 val regular_interrupts =
46 [Thread.EnableBroadcastInterrupt true, Thread.InterruptState Thread.InterruptAsynchOnce];
48 fun with_attributes _ f x = f [] x;
51 (* critical section *)
53 fun self_critical () = false;
54 fun NAMED_CRITICAL _ e = e ();
55 fun CRITICAL e = e ();
60 local val count = ref (0: int)
61 in fun serial () = (count := ! count + 1; ! count) end;
65 structure BasicMultithreading: BASIC_MULTITHREADING = Multithreading;
66 open BasicMultithreading;