From owner-freebsd-threads@FreeBSD.ORG Wed Jun 4 11:35:35 2003 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8A66637B401 for ; Wed, 4 Jun 2003 11:35:35 -0700 (PDT) Received: from sccrmhc12.attbi.com (sccrmhc12.attbi.com [204.127.202.56]) by mx1.FreeBSD.org (Postfix) with ESMTP id CC49343F75 for ; Wed, 4 Jun 2003 11:35:34 -0700 (PDT) (envelope-from julian@elischer.org) Received: from interjet.elischer.org ([12.232.168.4]) by attbi.com (sccrmhc12) with ESMTP id <20030604183533012003u0vde>; Wed, 4 Jun 2003 18:35:34 +0000 Received: from localhost (localhost.elischer.org [127.0.0.1]) by InterJet.elischer.org (8.9.1a/8.9.1) with ESMTP id LAA02987; Wed, 4 Jun 2003 11:35:32 -0700 (PDT) Date: Wed, 4 Jun 2003 11:35:31 -0700 (PDT) From: Julian Elischer To: Jeff Roberson In-Reply-To: <20030604130858.M69975-100000@mail.chesapeake.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Kern Sibbald cc: Daniel Eischen cc: freebsd-threads@freebsd.org Subject: Re: FreeBSD pthread_equal "bug" X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jun 2003 18:35:35 -0000 On Wed, 4 Jun 2003, Jeff Roberson wrote: > On 4 Jun 2003, Kern Sibbald wrote: > > > > > I'm not sure what the POSIX specification says, > > if I were programming it, I would not be content > > with the FreeBSD current implementation especially > > considering that both Solaris and Linux do it "correctly". > > Would you rather your application failed immediately, or in a subtle, > unexpected way after many hours/weeks/months of run time? Dan says the > standard allows for immediate reuse. If that is correct, then Solaris, > linux, and FreeBSD all do it correctly for the only definition of > correctly that matters. > > Simply adding an ID is problematic because the ids will wrap. Without > using some deterministic notification you can't be sure that it isn't an > expired thread. I will quote from "Programming with Posix threads" by David R Butenhof.. He is one o fthe main authors of the Posix threads standard so I tend to treat this book as a guide.. "Once a thread is recycled, the thread's ID (pthread_t) is no longer valid. You cannot join with the thread, canel it, or anything else. The terminated thread's ID (which may be the addess of a system data structure) may be assigned to a new thread. Instead of receiving an ESRCH failure from your call to pthread_cancel, you would instead cancel a different thread." I think that is pretty explicit as far as expected bahaviour. HAVING SAID THAT, it is not impossible that at some time in the future we may use some other pthread_t type, e.g an incrementing TID, but at this time I think we are well within the standard... Julian