>On Mon, 5 Feb 2007, bert hubert wrote:
>
>
>>From my end as an application developer, yes please. Either make it
>>perfectly ok to have thousands of outstanding asynchronous system calls (I
>>work with thousands of separate sockets), or allow me to select/poll/epoll
>>on the "async fd".
>>
>>
>
>No can do.
>
>Allocating an fd is actually too expensive, exactly because a lot of these
>operations are supposed to be a few hundred ns, and taking locks is simply
>a bad idea.
>
>But if you want to, we could have a *separate* "convert async cookie to
>fd" so that you can poll for it, or something.
>
>I doubt very many people want to do that. It would tend to simply be nicer
>to do
>
> async(poll);
> async(waitpid);
> async(.. wait foranything else ..)
>
>followed by a
>
> wait_for_async();
>
>That's just a much NICER approach, I would argue. And it automatically
>and very naturally solves the "wait for different kinds of events"
>question, in a way that "poll()" never did (except by turning all events
>into file descriptors or signals).
>
>
>
>>Alternatively, something like SIGIO ('SIGASYS'?) might be considered, but,
>>well, the fd might be easier.
>>
>>
>
>Again. NO WAY. Signals are just damn expensive. At most, it would be an
>option again, but if you want high performance, signals simply aren't very
>good. They are also a nice way to make your user-space code very racy.
>
>
>
>>In fact, perhaps the communication channel might simply *be* an fd. Queueing
>>up syscalls sounds remarkably like sending datagrams.
>>
>>
>
>I'm the first to say that file descriptors is the UNIX way, but so are
>processes, and I think this is MUCH better done as a "process" interface.
>In other words, instead of doing it as a filedescriptor, do it as a
>"micro-fork/exec", and have the "wait()" equivalent. It's just that we
>don't fork a "real process", and we don't exec a "real program", we just
>exec a single system call.
>
>If you think of it in those terms, it all makes sense *without* any file
>descriptors what-so-ever, and the "wait_for_async()" interface also makes
>a ton of sense (it really *is* "waitpid()" for the system call).
>
> Linus
>
>--
>To unsubscribe, send a message with 'unsubscribe linux-aio' in
>the body to
majordomo@kvack.org. For more info on Linux AIO,
>see:
http://www.kvack.org/aio/
>Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
>
>