Date: Thu, 20 Feb 2014 13:41:08 +0800 From: David Xu <davidxu@freebsd.org> To: Andre Albsmeier <mail@ma17.ata.myota.org>, freebsd-hackers@freebsd.org Subject: Re: pthread programming eats up resources (My or FreeBSD's fault?) Message-ID: <53059574.8090605@freebsd.org> In-Reply-To: <20140218180646.GA67861@schlappy> References: <20140218180646.GA67861@schlappy>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2014/02/19 02:06, Andre Albsmeier wrote: > Well, as these are my first steps regarding thread programming, > it's probably my fault... > > Why does this programme slowly grow and grow until it hits > resource limits? > > ----- snip pth1.c ----- > > #include <stdio.h> > #include <unistd.h> > #include <pthread.h> > > void* mythread( void* arg ) > { > return NULL; > } > > int main( int argc, const char* const argv[] ) > { > pthread_t pthr; > int i; > > while( 1 ) { > > for( i=1000; i; i-- ) > if( pthread_create( &pthr, NULL, mythread, NULL ) != 0 ) > fprintf( stderr, "pthread_create\n" ); > else > pthread_detach( pthr ); > > putchar( '.' ); > fflush( stdout ); > usleep( 25000 ); > } > } > > ----- snap ----- > > Just to be sure I have also created the non-detaching version > which behaves in the same way: > > ----- snip pth2.c ----- > > #include <stdio.h> > #include <unistd.h> > #include <pthread.h> > > #define M 1000 > > pthread_t pthr[M]; > > void* mythread( void* arg ) > { > return NULL; > } > > int main( int argc, const char* const argv[] ) > { > int i; > > while( 1 ) { > > for( i=M; i; i-- ) > if( pthread_create( &pthr[i], NULL, mythread, NULL ) != 0 ) > fprintf( stderr, "pthread_create\n" ); > > for( i=M; i; i-- ) > if( pthread_join( pthr[i], NULL ) != 0 ) > fprintf( stderr, "pthread_join\n" ); > > putchar( '.' ); > fflush( stdout ); > usleep( 25000 ); > } > } > > ----- snap ----- > > Compile them using -pthread and watch their ps output in another > window (FreeBSD-9.2 but that shouldn't matter). > > So what am I doing wrong here? > > Thanks, > > -Andre please compile it as static binary and run it, check if the problem still exists, I am hunting the bug, it is not necessary in the libthr because I have not changed its code for a long time. Regards, David Xu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53059574.8090605>