From owner-freebsd-hackers@FreeBSD.ORG Tue Mar 15 05:10:35 2005 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 74EE816A4CE; Tue, 15 Mar 2005 05:10:35 +0000 (GMT) Received: from vms040pub.verizon.net (vms040pub.verizon.net [206.46.252.40]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4A71643D4C; Tue, 15 Mar 2005 05:10:35 +0000 (GMT) (envelope-from ringworm01@gmail.com) Received: from ringworm.mechee.com ([4.27.46.32]) by vms040.mailsrvcs.net (Sun Java System Messaging Server 6.2 HotFix 0.04 (built Dec 24 2004)) with ESMTPA id <0IDD00G32NPMR7Q0@vms040.mailsrvcs.net>; Mon, 14 Mar 2005 23:10:35 -0600 (CST) Received: by ringworm.mechee.com (Postfix, from userid 1001) id C28542CE75B; Mon, 14 Mar 2005 21:10:33 -0800 (PST) Date: Mon, 14 Mar 2005 21:10:32 -0800 From: "Michael C. Shultz" In-reply-to: To: Daniel Eischen , freebsd-hackers@freebsd.org Message-id: <200503142110.33053.ringworm01@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: 7bit Content-disposition: inline References: User-Agent: KMail/1.7.2 cc: reso3w83@verizon.net Subject: Re: threads question X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Mar 2005 05:10:35 -0000 On Monday 14 March 2005 08:57 pm, Daniel Eischen wrote: > On Mon, 14 Mar 2005, Michael C. Shultz wrote: > > Hi, I've just reached a point in a program I'm writing where I'd > > like to do threading. > > > > When I try to start a thread like this: > > > > pthread_create(&thread, &attr, MGPMrUpgrade, property ); > > ^^^^^^^^ &property > > You should compile with -Wall and get rid of any warnings. > > > where property is a structure of many variables it doesn't get > > passed to the function. If I do this: > > > > pthread_create(&thread, &attr, MGPMrUpgrade( &property ), NULL ); > > That looks like it will actuall call MGPMrUpgrade() and use its > return value as the function pointer. > > > It works, but just seems wrong. > > > > Can anyone point me to a source file, preferably in /usr/src > > somewhere that passes a structure to a function being run as a > > thread so I may study the proper way to do this? > > src/lib/libpthread/test/sem_d.c > src/lib/libpthread/test/mutex_d.c > src/lib/libpthread/test/sigwait_d.c Great! > > I'd suggest getting Butenhof's "Programming with POSIX Threads" book. I did a google on "Programming with POSIX Threads" and this site popped up first. I remember this guy's stuff from way back when on signals I think, it was great for a beginner so maybe this one is worth looking at too. "http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html" I found the book at Amazon, thanks for the tip! Many thanks! -Mike