From owner-freebsd-threads@FreeBSD.ORG Wed Mar 21 07:13:17 2012 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23582106567B for ; Wed, 21 Mar 2012 07:13:17 +0000 (UTC) (envelope-from cmeerw@cmeerw.org) Received: from edge.cmeerw.net (edge.cmeerw.net [IPv6:2001:1608:10:3::7]) by mx1.freebsd.org (Postfix) with ESMTP id A73978FC20 for ; Wed, 21 Mar 2012 07:13:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cmeerw.org; s=dkim; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:Subject:To:From:Date; bh=0RQ4WjGoZu0515Ouhr8rrDRifHnl3U38oVGRJJ+XOoY=; b=oDIA/qvL+su2aeQB9y/uoic2Bde0TsKeK9gJ1eoIKusdZmNlVZBoOZtp4TvZpPCtvBAr4Kytam59pC1zHVueuMnis+WniY9zGfykW9+E0N0RZa0T65u5TwXa7unDIcq7I0NaWScgBFOtqPXQwApducclpjT/TgrcH9vfTbwpyp0=; Received: from cmeerw by edge.cmeerw.net with local (Exim 4.77) (envelope-from ) id 1SAFjN-0008H4-IE; Wed, 21 Mar 2012 08:13:13 +0100 Date: Wed, 21 Mar 2012 08:13:13 +0100 From: Christof Meerwald To: freebsd-threads@freebsd.org Message-ID: <20120321071313.GA30458@edge.cmeerw.net> References: <20120318213749.GQ843@edge.cmeerw.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120318213749.GQ843@edge.cmeerw.net> X-PGP-Key: 1024D/2B10BE68, 1998-06-29 X-PGP-Fingerprint: 0289 5466 C1F5 B03C DBA7 6304 8CAF 9782 2B10 BE68 User-Agent: Mutt/1.5.20 (2009-06-14) Subject: Re: kevent and multiple worker threads X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Mar 2012 07:13:17 -0000 On Sun, Mar 18, 2012 at 10:37:49PM +0100, Christof Meerwald wrote: > I am trying to figure out how kqueue/kevent works in a multi-threaded > environment. So I have created a small test program > (http://svn.cmeerw.net/src/nginetd/trunk/test/kqtest.cc) that creates > a socketpair and send 4-byte messages between the 2 sockets. There is > only ever 1 message in transit, but there can be multiple threads > waiting for event notification using kevent. Ok, it looks like it has something to do with the size of the eventlist I am passing in - if I call kevent with nevents=16 instead of nevents=1 I get much more reasonable results on FreeBSD. The surprising thing here, of course, is that kevent will only ever return 1 event (as there is only 1 message in transit), so I am not sure why the size of the eventlist would make a difference. Christof -- http://cmeerw.org sip:cmeerw at cmeerw.org mailto:cmeerw at cmeerw.org xmpp:cmeerw at cmeerw.org