I finally had some time to look at this, and native_dispatch() had exactly what I was looking for.
However, I found a problem (at least for me) in THREADS_ALLOW(): when you call this macro, it checks if threads are enabled and the number of threads. If there are more than one thread, it unlocks the interpreter. The problem is, if you only have one thread when you call THREADS_ALLOW(), the lock doesn't get released and any code running in "temporary pike external" threads will just sit there. I imagine that this is only a problem for things like the java bridge and my code, but thought I'd mention it in case there's a simple solution. I have taken to starting a thread that simply enters a sleep () loop before creating my external threads, and this works just fine. Anyone have a better solution?
Bill
Thu Sep 7 10:25:01, Henrik Grubbström (Lysator) at Pike (-) developers forum wrote:
I'm working on an Objective-C bridge for Pike, and I've got a
problem
Take a look at src/modules/Java/jvm.c:native_dispatch().
Bill