Maurizio Monge wrote:
Hi, i used forkIO to write a 'por' (parallel or) implementation
(just a proof of concept), arguments are evaluated in different
threads and as soon as one of the threads returns true the other
thread is killed and true is returned.
If both threads return false the result of the computation is false.

I have been doing a few tests and looks like that in some cases
the function that do not terminate (that i used to test the por
correctness) seam not be preempted, and thus the program do not
terminate.
The very strange thing is that the program (that i am attaching)
works as expected if it is compiled with -O, but hangs if compiled
without optimization!

It sounds like you are just falling foul of the fact that GHC only context switches when a thread is doing allocation; if it is sitting in a loop not doing any allocation then you won't see a context switch. In GHC 6.6 you'll be able to work around this to some extent by using 2 processors.

Cheers,
        Simon
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to