From owner-freebsd-hackers@FreeBSD.ORG Tue Nov 16 15:38:33 2010 Return-Path: <owner-freebsd-hackers@FreeBSD.ORG> Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7B78106566B for <freebsd-hackers@freebsd.org>; Tue, 16 Nov 2010 15:38:33 +0000 (UTC) (envelope-from joerg@britannica.bec.de) Received: from www.sonnenberger.org (www.sonnenberger.org [92.79.50.50]) by mx1.freebsd.org (Postfix) with ESMTP id 7BF578FC08 for <freebsd-hackers@freebsd.org>; Tue, 16 Nov 2010 15:38:33 +0000 (UTC) Received: from britannica.bec.de (www.sonnenberger.org [192.168.1.10]) by www.sonnenberger.org (Postfix) with ESMTP id 0F771667A1 for <freebsd-hackers@freebsd.org>; Tue, 16 Nov 2010 16:18:56 +0100 (CET) Received: by britannica.bec.de (Postfix, from userid 1000) id B13B7116D6D; Tue, 16 Nov 2010 16:19:03 +0100 (CET) Date: Tue, 16 Nov 2010 16:19:03 +0100 From: Joerg Sonnenberger <joerg@britannica.bec.de> To: freebsd-hackers@freebsd.org Message-ID: <20101116151903.GA2361@britannica.bec.de> Mail-Followup-To: freebsd-hackers@freebsd.org References: <ibu503$up9$1@dough.gmane.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <ibu503$up9$1@dough.gmane.org> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: Network socket concurrency (userland) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD <freebsd-hackers.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-hackers>, <mailto:freebsd-hackers-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/freebsd-hackers> List-Post: <mailto:freebsd-hackers@freebsd.org> List-Help: <mailto:freebsd-hackers-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-hackers>, <mailto:freebsd-hackers-request@freebsd.org?subject=subscribe> X-List-Received-Date: Tue, 16 Nov 2010 15:38:33 -0000 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