src/Pure/Concurrent/simple_thread.ML
changeset 60830 f56e189350b2
parent 60829 4b16b778ce0d
child 60923 020becec359c
equal deleted inserted replaced
60829:4b16b778ce0d 60830:f56e189350b2
     5 *)
     5 *)
     6 
     6 
     7 signature SIMPLE_THREAD =
     7 signature SIMPLE_THREAD =
     8 sig
     8 sig
     9   val is_self: Thread.thread -> bool
     9   val is_self: Thread.thread -> bool
    10   val name: unit -> string option
    10   val get_name: unit -> string option
       
    11   val the_name: unit -> string
    11   type params = {name: string, stack_limit: int option, interrupts: bool}
    12   type params = {name: string, stack_limit: int option, interrupts: bool}
    12   val attributes: params -> Thread.threadAttribute list
    13   val attributes: params -> Thread.threadAttribute list
    13   val fork: params -> (unit -> unit) -> Thread.thread
    14   val fork: params -> (unit -> unit) -> Thread.thread
    14   val join: Thread.thread -> unit
    15   val join: Thread.thread -> unit
    15   val interrupt_unsynchronized: Thread.thread -> unit
    16   val interrupt_unsynchronized: Thread.thread -> unit
    28 local
    29 local
    29   val tag = Universal.tag () : string Universal.tag;
    30   val tag = Universal.tag () : string Universal.tag;
    30   val count = Counter.make ();
    31   val count = Counter.make ();
    31 in
    32 in
    32 
    33 
    33 fun name () = Thread.getLocal tag;
    34 fun get_name () = Thread.getLocal tag;
    34 fun set_name base = Thread.setLocal (tag, base ^ "/" ^ string_of_int (count ()));
    35 
       
    36 fun the_name () =
       
    37   (case get_name () of
       
    38     NONE => raise Fail "Unknown thread name"
       
    39   | SOME name => name);
       
    40 
       
    41 fun set_name base =
       
    42   Thread.setLocal (tag, base ^ "/" ^ string_of_int (count ()));
    35 
    43 
    36 end;
    44 end;
    37 
    45 
    38 
    46 
    39 (* fork *)
    47 (* fork *)