From: Tim R. <ti...@pr...> - 2007-09-12 16:38:15
|
Damjan Jovanovic wrote: > On 9/11/07, Michael Lewis <mil...@gm...> wrote: > >> For the Linux backend in OpenUSB, I have only implemented the asynchronous >> i/o functions. Is it preferable that the frontend detect this and then use >> the asynchronous functions with it's own call back (similiar to the >> simple_io_* functions in the libusb development branch) OR would it be >> better for the backend to do this? >> >> What's everyone's opinion on this? >> > > User-space USB I/O has enough overhead as it is, additional locking > and context-switching needed to implement synchronous calls on top of > an asychronous backend will slow it down further, as will creating new > threads to do asynchronous I/O on top of a synchronous backend. > > Each backend should offer as much as the underlying operating system > supports for best performance. > The typical synchronous I/O request is going to block, so the small additional overhead has negligible overall impact. The danger in fully implementing both paths is that one of the two will be the "preferred" solution, so that the other option doesn't get enough real world testing to iron out the problems. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |