
#9656: Process and thread init/deinit hooks for C libraries -------------------------------------+------------------------------------- Reporter: 3noch | Owner: Type: feature | Status: closed request | Milestone: Priority: normal | Version: 7.8.3 Component: Compiler | Keywords: FFI Resolution: invalid | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by AndreasVoellmy): (Let me know if this discussion has moved elsewhere.) I've wondered about this question, too. I have a multithreaded Haskell program that makes some calls into a JVM. To do this, each OS thread calling into the JVM needs to have some data initialized. While I could do the forkOS approach, I want to have any Haskell thread call into Java, rather than having to send a message to my forkOS'd Haskell thread, wait for it to be scheduled, have it do the call, send a message back, etc. One idea is to have a capability-local data structure, but that doesn't work because multiple OS threads might execute a capability (at different times). So I have to manage the initialization in the C code: whenever the C code is invoked in a given OS thread, the thread checks whether its data structures are initialized. No conclusions here, just wanted to chime with my experience on this topic. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9656#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler