Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Nov 2010 16:19:03 +0100
From:      Joerg Sonnenberger <joerg@britannica.bec.de>
To:        freebsd-hackers@freebsd.org
Subject:   Re: Network socket concurrency (userland)
Message-ID:  <20101116151903.GA2361@britannica.bec.de>
In-Reply-To: <ibu503$up9$1@dough.gmane.org>
References:  <ibu503$up9$1@dough.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 16, 2010 at 03:37:59PM +0100, Ivan Voras wrote:
> Are there any standard-defined guarantees for TCP network sockets
> used by multiple threads to do IO on them?

System calls are atomic relative to each other. They may be partially
executed from the perspective of a remote system, e.g. due to
segmentation, but one system call will finish before the next call of
the same category is started.

> Specifically, will multiple write() or send() calls on the same
> socket execute serially (i.e. not interfere with each other) and
> blocking (until completion) even for large buffer sizes? What about
> read() / recv()?

All write operations are serialised against each other, just like all
read operations are serialised against.

Joerg



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101116151903.GA2361>