All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Kegel <dank@kegel.com>
To: "Randy.Dunlap" <rddunlap@osdl.org>
Cc: Matti Aarnio <matti.aarnio@zmailer.org>,
	Corey Minyard <minyard@acm.org>,
	Mark Mielke <mark@mark.mielke.cc>,
	Mark Hahn <hahn@physics.mcmaster.ca>,
	linux-kernel@vger.kernel.org
Subject: Re: debate on 700 threads vs asynchronous code
Date: Fri, 24 Jan 2003 16:11:35 -0800	[thread overview]
Message-ID: <3E31D637.1030306@kegel.com> (raw)
In-Reply-To: <Pine.LNX.4.33L2.0301241528100.9816-100000@dragon.pdx.osdl.net>

Randy.Dunlap wrote:
> On Sat, 25 Jan 2003, Matti Aarnio wrote:
> 
> | On Fri, Jan 24, 2003 at 04:53:46PM -0600, Corey Minyard wrote:
> | ...
> | > I would disagree.  One thread per connection is easier to conceptually
> | > understand.  In my experience, an event-driven model (which is what you
> | > end up with if you use one or a few threads) is actually easier to
> | > correctly implement and it tends to make your code more modular and
> | > portable.
> |
> |   An old thing from early annals of computer science (I browsed Knuth's
> | "The Art" again..) is called   Coroutine.
> |
> | Gives you "one thread per connection" programming model, but without
> | actual multiple scheduling threads in the kernel side.  ...
> | Doing coroutine library all in portable C (by means of setjmp()/longjmp())
> | is possible, but not very efficient.  A bit of assembly helps a lot.

There's also an elegant implementation that uses switch statements
or computed gotos; see http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
I'm using it.  It's a bit limited, but hey, it works for me.

> Davide Libenzi (epoll) likes and discusses coroutines on one of his
> web pages:  http://www.xmailserver.org/linux-patches/nio-improve.html
> (search for /coroutine/)

IMHO coroutines are harder to use than either threads or nonblocking I/O.
Then again, I don't like Scheme; many things in this world are a matter of taste.
- Dan

-- 
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045


  reply	other threads:[~2003-01-24 23:39 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.44.0301232144470.8203-100000@coffee.psychology.mcmaster.ca>
2003-01-24  8:21 ` debate on 700 threads vs asynchronous code Dan Kegel
2003-01-24  8:26   ` Mark Mielke
2003-01-24 22:53     ` Corey Minyard
2003-01-24 23:21       ` Matti Aarnio
2003-01-24 23:29         ` Randy.Dunlap
2003-01-25  0:11           ` Dan Kegel [this message]
2003-01-29 21:32 Dan Kegel
  -- strict thread matches above, loose matches on Subject: below --
2003-01-29 17:26 Lee Chin
2003-01-29 17:26 ` Lee Chin
2003-01-30  9:36 ` Terje Eggestad
2003-01-30  9:36   ` Terje Eggestad
     [not found] <Pine.LNX.4.44.0301241840450.11758-100000@coffee.psychology.mcmaster.ca>
2003-01-25  0:24 ` Dan Kegel
     [not found] <Pine.LNX.4.44.0301232028480.980-100000@coffee.psychology.mcmaster.ca>
2003-01-24  2:04 ` Dan Kegel
2003-01-24  1:46 Dan Kegel
2003-01-24  0:07 Lee Chin
2003-01-23 23:19 Lee Chin
2003-01-23 23:19 ` Lee Chin
2003-01-23 23:28 ` Larry McVoy
2003-01-23 23:31 ` Ben Greear
2003-01-23 23:31   ` Ben Greear
2003-01-27  9:48 ` Terje Eggestad
2003-01-27 21:48   ` Bill Davidsen
2003-01-27 21:48     ` Bill Davidsen
2003-01-27 22:08 ` Bill Davidsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3E31D637.1030306@kegel.com \
    --to=dank@kegel.com \
    --cc=hahn@physics.mcmaster.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark@mark.mielke.cc \
    --cc=matti.aarnio@zmailer.org \
    --cc=minyard@acm.org \
    --cc=rddunlap@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.