pthread programming eats up resources (My or FreeBSD's fault?)
Andre Albsmeier
mail at ma17.ata.myota.org
Tue Feb 18 18:09:41 UTC 2014
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
More information about the freebsd-hackers
mailing list