src/Pure/Concurrent/isabelle_thread.scala
changeset 73120 c3589f2dff31
parent 72334 6916b48b375c
child 73340 0ffcad1f6130
equal deleted inserted replaced
73119:83a2b6976515 73120:c3589f2dff31
   177   override def interrupt: Unit = handler(thread)
   177   override def interrupt: Unit = handler(thread)
   178 
   178 
   179   def interrupt_handler[A](new_handler: Isabelle_Thread.Interrupt_Handler)(body: => A): A =
   179   def interrupt_handler[A](new_handler: Isabelle_Thread.Interrupt_Handler)(body: => A): A =
   180     if (new_handler == null) body
   180     if (new_handler == null) body
   181     else {
   181     else {
   182       require(is_self)
   182       require(is_self, "interrupt handler on other thread")
   183 
   183 
   184       val old_handler = handler
   184       val old_handler = handler
   185       handler = new_handler
   185       handler = new_handler
   186       try {
   186       try {
   187         if (clear_interrupt) interrupt
   187         if (clear_interrupt) interrupt