9front adds a inferno inspired mechanism for handling
requests in parallel to the 9p service loop called 
srvrelease()/srvacquire().

often explicitely breaking up your request handling into
separate processes and handing off a request to a process
seems overkill. instead, you can do a srvrelease() which will
(if neccesary) spawn a new process to handle the 9p service
loop while your calling process is now free to block.
once you finished you do a srvacquire() to serialize with
the 9p service loop again.

i used this to make usb drivers multithreaded. usb devs can
be slow to respond or sometimes even hang. as the filesystem is
bound onto /dev, a hanging usb device would hang all walks
on /dev making the system unusable with a single threaded
implementation. srvrelease()/srvacquire() made these changes
trivial todo.

--
cinap

Reply via email to