On 11/09/2010 07:59, Edward Z. Yang wrote:
So I did a writeup of what I thought might be the next direction to
go with the interruptible patch:

     http://blog.ezyang.com/2010/09/towards-platform-agnostic-interruptibility/

The really interesting bit (which I didn't cover) is what information
to give to the user functioSo I did a writeup of what I thought might be the 
next direction to
go with the interruptible patch:

     http://blog.ezyang.com/2010/09/towards-platform-agnostic-interruptibility/

The really interesting bit (which I didn't cover) is what information
to give to the user function.  It needs to be somewhat under the
hood: if someone wants to pthread_cancel they need to know what the pthreads
ID is; if they want to transmit a Windows event they need some way to get
a hold of the event handle associated with the foreign call.

The idea of having user-definable cancellation mechanisms seems quite sensible, given that we have so many ways to do this. However it seems quite hard in practice: for pthread_cancel, the RTS has to behave quite differently from pthread_kill. The API for defining the cancellation mechanism could get quite complicated.

For now I would go with 'interruptible' (meaning either pthread_kill() or CancelSynchronousIO()). It's not nearly as dangerous as pthread_cancel(), but it covers a lot of the cases we're interested in, and it doesn't have problems with bound threads.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to