[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] Chicken callbacks
From: |
chi |
Subject: |
[Chicken-users] Chicken callbacks |
Date: |
Sun, 31 May 2015 12:08:29 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 |
If you use a C library that requires callbacks, like libuv for instance, is it
possible to write a procedure in chicken that will be guaranteed to return, as
the C library requires? Like, by avoiding thread switching or call/cc or
something?
I was thinking to sort of invert libuv, by using simple callbacks that only
updated a global list of active event objects. The libuv main loop would return
after a single event came in, and the scheme code could handle the events by
checking that active list, and not have to worry about whether they're inside a
persnickety C callback. Sort of like how epoll returns a list of active events,
and libuv covers that up by dispatching those events to callbacks, and then I
would use those callbacks to ...create a list of active events. Would I have to
write those simple callbacks in C too? Could those simple C callbacks update a
scheme "active event list" structure without getting longjmp'd? Or maybe the
surrounding scheme would read a C structure "active" list?
Come to think on it, epoll returns a list of active events, and doesn't IOCP
also return a list of active events? I'm not much familiar with the Microsoft
platform. I know Linux's async disk IO methods return a list of active events
with no callbacks. (Then Glibc's AIO wraps them up in callbacks AND a thread
pool -_-) Pretty sure kqueue doesn't use callbacks either. Most kernel
developers are probably going to have a hard time doing anything with callbacks
I imagine, since such callbacks would violate the kernel/userspace separation.
Almost as if callbacks were a horrible idea in general...
If so, I wish there was a cross platform networking library that used each
platforms "fast" event poller, and simply produced a unified interface for
events produced, instead of wrapping it up in registering callbacks and all that
jazz. Can't think of a non-platform-specific events library that /doesn't/ use
callbacks...
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Chicken-users] Chicken callbacks,
chi <=