Browse thread
[Caml-list] Inter-thread exceptions
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <xavier.leroy@i...> |
| Subject: | Re: [Caml-list] Inter-thread exceptions |
> Nethertheless I think it's possible for network I/O, and even portable > enough (should work under pthreads/windows threads). Roughly the idea is > following: > > 0. Create a global "interrupt" socket. > 1. Perform select() before each blocking syscall, waiting for readability > of "interrupt" socket or the necessary state of "main" socket. > 3. If "main" socket was in the necessary state, do the syscall. > 4. If "interrupt" socket is readable, determine interrupt to which thread > is requested. If it's other thread, call sched_yield() for pthreads > (nothing under Windows) and return to (1) For one thing, not all blocking syscalls can be made non-blocking using select(). (Think opening a FIFO, for instance.) Moreover, not all blocking syscalls are in C code that we control. (Think gethostbyname(): it will do network I/O to query the DNS, but in a way that we don't control.) - Xavier Leroy ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners