src/Doc/Implementation/ML.thy
changeset 59187 5a783837b50b
parent 59180 c0fa3b3bdabd
child 59572 7e4bf0824cd3
equal deleted inserted replaced
59186:45e31a196b57 59187:5a783837b50b
  1833   required. Synchronization in Isabelle/ML is based on primitives of Poly/ML,
  1833   required. Synchronization in Isabelle/ML is based on primitives of Poly/ML,
  1834   which have been adapted to the specific assumptions of the concurrent
  1834   which have been adapted to the specific assumptions of the concurrent
  1835   Isabelle environment. User code should not break this abstraction, but stay
  1835   Isabelle environment. User code should not break this abstraction, but stay
  1836   within the confines of concurrent Isabelle/ML.
  1836   within the confines of concurrent Isabelle/ML.
  1837 
  1837 
  1838   A \emph{synchronized variable} is an explicit state component is associated
  1838   A \emph{synchronized variable} is an explicit state component associated
  1839   with mechanisms for locking and signaling. There are operations to await a
  1839   with mechanisms for locking and signaling. There are operations to await a
  1840   condition, change the state, and signal the change to all other waiting
  1840   condition, change the state, and signal the change to all other waiting
  1841   threads. Synchronized access to the state variable is \emph{not} re-entrant:
  1841   threads. Synchronized access to the state variable is \emph{not} re-entrant:
  1842   direct or indirect nesting within the same thread will cause a deadlock!\<close>
  1842   direct or indirect nesting within the same thread will cause a deadlock!\<close>
  1843 
  1843