Date: Tue, 18 Feb 2014 19:06:46 +0100 From: Andre Albsmeier <mail@ma17.ata.myota.org> To: freebsd-hackers@freebsd.org Cc: mail@ma17.ata.myota.org Subject: pthread programming eats up resources (My or FreeBSD's fault?) Message-ID: <20140218180646.GA67861@schlappy>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140218180646.GA67861>
