On 12/7/06, Chris Kuklewicz <[EMAIL PROTECTED]> wrote:
Could you add info about where to get your code (or the code) itself to the wiki at http://haskell.org/haskellwiki/Concurrency_demos/Graceful_exit ?
OK, I did.
"unblock yield" is the right code for a safepoint
Be careful. You are relying on the runtime to wake up the throwing thread, to let it run long enough to raise the asynchronous exception, and to have that complete before the thread doing the "unblock yield" is resumed. While a particular Haskell implementation might do all that on a single processor system, it's hard to see how such a guarantee could ever be offered on a multiprocessor system. These days it's common to buy a computer with a dual core cpu, before long we'll be getting cpu's with ten cores... and in a few years we'll be seeing hundred core cpu's. "yield" is meaningless on a multiprocessor system. I'd suggest that if you're using a concurrent language and you find that the only way you can implement an algorithm is by using "yield", either A) you're wrong and there is a way to implement it without "yield", or B) your concurrent language is deficient and should be fixed! :-) _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell