Howto pass exceptions between threads

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Alexander Eisenhuth

    #1

    Howto pass exceptions between threads

    Hallo Alltogether,

    I've searched in this mailing list, but it seems to me that there is no general
    approach to pass exceptions from one thread to another.

    I think most application do a unique way of handling "unhandled exceptions", at
    least they (should) try to log them.

    The following discussion seems to me most valuable (Sorry for the long URL, I
    don't know a way of shorter)




    I've the feeling that if you're using the python class threading.Threa d you've a
    unique interface of handling it. (thread synchronizing + exception raising)

    But' when you've a C++ extension, that uses it's own thread implementation and
    your exceptions happens in python code (but from a thread that is controlled by
    your extension) you have another problem.

    Maybe I've overseen something in the python docu, so I ask for the solutions,
    concepts, hints ... you solved the problem.

    Regards
    Alexander
  • John Nagle

    #2
    Re: Howto pass exceptions between threads

    Alexander Eisenhuth wrote:
    Hallo Alltogether,
    >
    I've searched in this mailing list, but it seems to me that there is no
    general approach to pass exceptions from one thread to another.
    Very few languages have that.

    Actually, it could be made to work for Python, but it would have to
    be carefully designed. Something that raises an exception in another
    thread the next time the thread blocks would have relatively sane
    semantics. You couldn't raise an exception on a compute-bound thread,
    only at block points (locks, I/O, long system calls.)

    John Nagle

    Comment

    • Alexander Eisenhuth

      #3
      Re: Howto pass exceptions between threads

      John Nagle schrieb:
      Alexander Eisenhuth wrote:
      >Hallo Alltogether,
      >>
      >I've searched in this mailing list, but it seems to me that there is
      >no general approach to pass exceptions from one thread to another.
      >
      Very few languages have that.
      >
      Actually, it could be made to work for Python, but it would have to
      be carefully designed. Something that raises an exception in another
      thread the next time the thread blocks would have relatively sane
      semantics. You couldn't raise an exception on a compute-bound thread,
      only at block points (locks, I/O, long system calls.)
      >
      John Nagle
      Yes you're right, it must be well designed with a clear responsibility
      delegation. I can imgagine the following points:

      - Thread termination with termination handler (for Thread instance)
      - Main Thread information / synchronisation
      - Default/Customized main thread exception handler

      Comment

      Working...