On Mon, 2005-07-25 at 13:47 +0000, John Goerzen wrote: > On 2005-07-25, Simon Marlow <[EMAIL PROTECTED]> wrote: > > On 23 July 2005 03:38, Duncan Coutts wrote: > > Thanks for describing the problem in detail, I understand it better now. > > I think it comes down to this conflict: > > > > - you want to take advantage of the fact that GHC has lightweight > > "green" threads in order to do multithreading within a single OS > > thread, but > > > > - our "bound threads" design does not require the implementation > > to support lightweight threads, and hence doesn't let the > > programmer take advantage of them. > > In my particular case, the C library isn't aware of threading at all. > While it may be safe to call it from any arbitrary Haskell thread, it > would not be safe to call it from two threads simultaneously.
That's ok. Without the threaded rts, you get just one OS thread being used to make the foreign calls. > It seems that some sort of global lock -- implemented as a global > variable of some sort, I guess -- is necessary. I'm not sure exactly > how to accomodate that. > > It seems the current model doesn't work all that well in this scenario, > unless I'm missing something? So long as you can arrange for your C lib to call back to Haskell reasonably often you can use the same solution as Gtk2Hs uses. I've outlined the technique here (mostly on page 2 for implementation notes): http://haskell.org/gtk2hs/archives/2005/07/24/writing-multi-threaded-guis/ Duncan _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
