On 14 December 2005 14:37, Joel Reymont wrote: > How do unbound threads play with FFI? According to Simon PJ, each > foreign call will get its own OS thread if its blocked. > > How does GHC determine if the call is blocked? Does each call get its > own OS thread from the start? Sometime later?
When a thread exits Haskell to make an FFI call, another OS thread takes over running the other Haskell threads. If we don't have another OS thread available, we start one. > Does this depend on the safe/unsafe specs of the foreign call? this only happens for safe calls, not unsafe. > Does the above change if a threaded/non-threaded runtime is in use? this only happens in the -threaded RTS, in the non-threaded RTS a FFI call will block all the other Haskell threads. Cheers, Simon _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe