Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

From: Linus Torvalds
Date: Mon Feb 26 2007 - 15:06:33 EST




On Mon, 26 Feb 2007, Evgeniy Polyakov wrote:
>
> Will you argue that people do things like
> num = epoll_wait()
> for (i=0; i<num; ++i) {
> process(event[i])?
> }

I have several times told you that I argue for a *combination* of
event-bassed interfaces and thread-like code. And that the choice depends
on which is more natural. Sometimes you might have just one or the other.
Sometimes you have both. And sometimes you have neither (although,
strictly speaking, normal single-threaded code is certainly "thread-like"
- it's a serial execution, the same way threadlets are serial executions -
it's just not running in parallel with anything else).

> Will you spawn thread per IO?

Depending on what the IO is, yes.

Is that _really_ so hard to understand? There is no "yes" or "no". There's
a "depends on what the problem is, and what the solution looks like".

Sometimes the best way to do parallelism is through explicit threads.
Sometimes it is through whatever "threadlets" or other that gets out of
this whole development discussion. Sometimes it's an event loop.

So get over it. The world is not a black and white, either-or kind of
place. It's full of grayscales, and colors, and mixing things
appropriately. And the choices are often done on whims and on whatever
feels most comfortable to the person doing the choice. Not on some strict
"you must always use things in an event-driven main loop" or "you must
always use threads for parallelism".

The world is simply _richer_ than that kind of either-or thing.

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/