[Python-Dev] Status of thread cancellation

Jean-Paul Calderone exarkun at divmod.com
Thu Mar 15 16:12:36 CET 2007


On Thu, 15 Mar 2007 09:41:31 -0500, skip at pobox.com wrote:
>
>    >> I just proposed to implement thread cancellation for the SoC.  Is
>    >> there any prior work where one could start?
>
>    Jean-Paul> The outcome of some prior work, at least:
>
>    Jean-Paul>   http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
>
>I responded to that.  I got the impression reading that page that the killed
>thread doesn't regain control so it can't clean up its potentially
>inconsistent data structures.

The second question on the page:

  Couldn't I just catch the ThreadDeath exception and fix the damaged object?

Addresses this.

>I inferred from Martin's proposal that he
>expected the thread to be able to catch the exception.  Perhaps he can
>elaborate on what cleanup actions the dying thread will be allowed to
>perform.

Perhaps he can.  Hopefully, he can specifically address these points:

   1. A thread can throw a ThreadDeath exception almost anywhere. All
      synchronized methods and blocks would have to be studied in great
      detail, with this in mind.

   2. A thread can throw a second ThreadDeath exception while cleaning up
      from the first (in the catch or finally clause). Cleanup would have
      to repeated till it succeeded. The code to ensure this would be quite
      complex. 

Jean-Paul


More information about the Python-Dev mailing list