Date: Sat, 27 Nov 1999 19:29:45 -0800 (PST) From: FengYue <fengyue@bluerose.windmoon.nu> To: hackers@FreeBSD.ORG Subject: Re: PThreads and Sockets Message-ID: <Pine.BSF.4.10.9911271917410.42608-100000@bluerose.windmoon.nu> In-Reply-To: <Pine.BSF.4.20.9911271746010.6921-100000@deadpixi.pernet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 27 Nov 1999, Rob King wrote:
>
> How would you recommend I do it? Please remember, I have no experience
> with pthreads, and any advice you give would be greatly appreciated.
There are couple of ways you could do this:
1) pass sd2's value instead of its memory address to serverstart()
pthread_create(&thread1, pthread_attr_default,serverstart, sd2);
then inside serverstart:
void serverstart (void *p)
{
int sockfd = (int) p;
....blah...blah
}
if you worry about void * being not as the same size as int on
some platforms, then u should use 2)
2) Use a mutex lock:
pthread_mutex_lock (&mp_lock);
_do_the_accept_
_create_thread_
inside serverstart(), right after u def' the pointer, do this
pthread_mutex_unlock (&mp_lock);
>
> I tried doing a pool of threads created at startup, and I think that may
> be a better approach...That would allow tighter control of resource limits
> - do something like Apache, have a "maximum number" of processes running.
Yes, that's a better approach in many cases. Creating threads itself
is a quiet expensive operation.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.9911271917410.42608-100000>
