[Haskell-cafe] Re: catting to cat gets stuck at > 135K

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Fri Nov 28 09:08:31 EST 2008


On Thu, 2008-11-27 at 11:38 -0500, Brandon S. Allbery KF8NH wrote:
> On 2008 Nov 27, at 8:51, Simon Marlow wrote:

> > No, the issue is that without real OS threads, a foreign call can't  
> > be pre-empted (pretty obvious when you think about it).   
> > waitForProcess ends up making a blocking foreign call - non-obvious,  
> > but at least it's documented.
> 
> The way this is usually handled in the non-threaded case is to either  
> use SIGCHLD or non-blocking waitpid() so that "green" threads can  
> continue running.  I'm a little surprised this wasn't done.

Yes, we've discussed this in detail a few months back. We even have a
partial implementation. However it stalled on needing a better signals
API which we have not managed to get through the standardisation
process.

Unfortunately there is no non-blocking (non-polling) waitpid() and the
global (process-scope) nature of signals is a pain.

Duncan



More information about the Haskell-Cafe mailing list