public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: 张韡武 <zhangweiwu@realss.com>
To: gentoo-user@lists.gentoo.org
Subject: [gentoo-user] how does a pipe work? Which process wait for which one, or they don't actually wait each other?
Date: Wed, 14 Jun 2006 21:12:15 +0800	[thread overview]
Message-ID: <1150290735.8524.12.camel@joe.realss> (raw)

Hello. This might be OT but I am pretty interested in this and being
unlucky not able to find a real in-depth explanation of pipe on the
Internet.

How does pipe actually work? I mean, when there is a pipe like this:
$ appA | appB
What happen if appA produced output when appB is still busy processing
the data and did not require any data from input?

possibility 1) as long as appA can get the resource (CPU?), it simply
keep outputing data, and this data is cached in memory, as long as there
is enough memory, and will finally feed to appB when appB finished his
business and begin to accept more data;

possibility 2) as long as appB stop requiring data, appA is suspended,
the resource goes to appB. appA is only given resource (CPU?) when appB
finished his business and begin to accept more data;

Which one is true? I know usually 1) and 2) makes no difference to most
users, that's why the detail explanation of "1) or 2)" is so hard to
google out.

In my case appA gets the data from another host who have very short
timeout settings, appB is used to compress the data obtained from appA.
the compression is very difficult, usually at 30Kbps, the network is
very fast, around 10Mbps. appB compress the data tunck by tunck, if
Linux actually works in mode 2), the network connection is dropped when
the interval of two tuncks of appB compressing data is longer then the
network timeout setting. appA acutally don't know how to restart
connection from where it was dropped, thus understanding this difference
makes sense to me.

I made several experiements and my appA and appB both works fine, but I
don't dare to share this appA/B to others unless I get the mechnism
understood.

Thank you in advance.

-- 
gentoo-user@gentoo.org mailing list



             reply	other threads:[~2006-06-14 13:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-14 13:12 张韡武 [this message]
2006-06-14 13:28 ` [gentoo-user] how does a pipe work? Which process wait for which one, or they don't actually wait each other? Uwe Thiem
2006-06-14 14:15 ` Devon Miller
2006-06-14 16:38 ` Boyd Stephen Smith Jr.

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=1150290735.8524.12.camel@joe.realss \
    --to=zhangweiwu@realss.com \
    --cc=gentoo-user@lists.gentoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox