src/Pure/Concurrent/single_assignment.ML
changeset 62891 7a11ea5c9626
parent 62505 9e2a65912111
child 62923 3a122e1e352a
equal deleted inserted replaced
62890:728aa05e9433 62891:7a11ea5c9626
    46 fun assign (v as Var {name, lock, cond, var}) x =
    46 fun assign (v as Var {name, lock, cond, var}) x =
    47   Multithreading.synchronized name lock (fn () =>
    47   Multithreading.synchronized name lock (fn () =>
    48     (case peek v of
    48     (case peek v of
    49       SOME _ => raise Fail ("Duplicate assignment to " ^ name)
    49       SOME _ => raise Fail ("Duplicate assignment to " ^ name)
    50     | NONE =>
    50     | NONE =>
    51         uninterruptible (fn _ => fn () =>
    51         Multithreading.uninterruptible (fn _ => fn () =>
    52          (SingleAssignment.saset (var, x); ConditionVar.broadcast cond)) ()));
    52          (SingleAssignment.saset (var, x); ConditionVar.broadcast cond)) ()));
    53 
    53 
    54 end;
    54 end;
    55 
    55 
    56 end;
    56 end;