Marc Feeley wrote: Are you willing to start a C thread for the Scheme code?
I could but I'd rather avoid it if I can.
This would decouple control between Scheme and C, allowing timers to be implemented in Scheme with the I/O timeout mechanisms.
How would you implement these timers?
Then you need two pipes between the C and Scheme worlds. These pipes could be actual OS pipes, sockets, or a new type of device (this would be more efficient and portable, but require the implementation of a new device in _os_io.c).
Can they be simple Scheme lists?
I thought I could have 3 Scheme functions I would call from C++ where one would start the Scheme loop in a Scheme thread and the other two would let C++ post events (sexp) to the "incoming events" Scheme list and the other would retrieve them from the "outgoing" list. The post/retrieve functions would use a mutex to block access to the lists/queues. Then I could do the timer by launching another thread within Gambit.
Maybe I'm misunderstanding the nature of integration that would be required here. Please let me know!
Thanks, Joel