Brandon S. Allbery KF8NH wrote: > On Jun 24, 2009, at 02:27 , Sittampalam, Ganesh wrote: >> Brandon S. Allbery KF8NH wrote: >> >>>> Sure - but it hurts more when in some environments you get away >>>> with it and others you don't. >>> >>> You'll still have that though, it'll just be a different set of >>> environments. The next failure mode after this one is writing more >>> than _PIPE_BUF down ih; you'll deadlock in the write when in >>> blocking mode, in non-blocking mode it depends on how the runtime >>> handles partial writes. >> >> I'd hope for consistency across the GHC runtimes though. > > > You can hope, but I get the impression blocking/non-blocking maps to > threaded/non-threaded respectively in which case all bets are off. > (Unless the ghc runtime guarantees some specific behavior here.)
I believe that from the point of view of each Haskell thread, the IO will always be blocking (unless you explicitly used a non-blocking call), but the GHC runtime actually handles the IO using select and non-blocking calls, and so avoids blocking the entire program, and that this doesn't vary between the threaded and non-threaded runtimes. That's why I found it confusing that a program that just did IO could behave differently on the two runtimes, until I found the bug in it. Ideally, the program would have deadlocked on both runtimes. Ganesh =============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html =============================================================================== _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users