[Haskell-cafe] Re: native threads vs. -threaded

2010-02-28 Thread Achim Schneider
Donn Cave d...@avvanta.com wrote:

 I imagine I'm at fault somewhere in this, since I am also responsible
 for the GHC port to Haiku, but just wondering if this suggests an
 obvious course of inquiry to anyone.  I assume it's not working as
 intended, as from the documentation I would rather have guessed that
 -thread would be required in this situation.
 
Could it be that Haiku is expecting BeOS threads but you give it UNIX
processes? It might be that all threads serving a GUI app must be part
of the same team.

-- 
(c) this sig last receiving data processing entity. Inspect headers
for copyright history. All rights reserved. Copying, hiring, renting,
performance and/or quoting of this signature prohibited.


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: native threads vs. -threaded

2010-02-28 Thread Donn Cave
Quoth Achim Schneider bars...@web.de,
 Donn Cave d...@avvanta.com wrote:

 I imagine I'm at fault somewhere in this, since I am also responsible
 for the GHC port to Haiku, but just wondering if this suggests an
 obvious course of inquiry to anyone.  I assume it's not working as
 intended, as from the documentation I would rather have guessed that
 -thread would be required in this situation.

 Could it be that Haiku is expecting BeOS threads but you give it UNIX
 processes? It might be that all threads serving a GUI app must be part
 of the same team.

No, I'm not creating any other threads or processes, other than the
window thread that's implicitly created by the window API.  If it
helps, a coarse outline of the API:

   class W : public BWindow {
W(...params...): BWindow(...params...) {
... initialize graphic elements
}
void MessageReceived(BMessage *msg) {
... respond to event by calling Haskell function
// will lead to thread abort if linked -threaded.
}
   };

main thread:
   W *w = W(...params...);
   w-Show();   // thread spawned by this member function.


I haven't written any code to support the above - BWindow::Show()
was provided by the platform.  I did of course have to do a lot
of hacking around with FFI stuff.  The BWindow-derived object
stores a table of foreign wrapper pointers to callback functions
that take a StablePtr, etc., and I wouldn't know where to start
thinking about that works with garbage collection.

Donn Cave, d...@avvanta.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe