Pthreads - prilis mnoho threadu?? (Delsi)

Dobes Jiri bobes na bigfoot.com
Pátek Duben 30 12:55:25 CEST 1999


Dobry den,

Vytvoril jsem program pro vypocty, ktery pouziva pthready.
Program bezi chvili v pohode, ale po nejky dobe dalsi thready 
uz nejdou vytvorit. Pritom jsem stare (doufam) zrusil.

Zde je priklad:

/* kompilace: cc -D_REENTRANT -o prikad priklad.c -lpthread
-I/usr/include -Iincl */
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>

void * process(void *a) /* tohle je vypoctova cast */
{ int i;
  printf("Thread %d: start\n", (int *)a);
  sleep(1); /* co jinyho by to mohlo delat? (a nezavisi to na tom) */
  printf("Thread %d: end\n", (int *)a);
  return NULL;}

int main(){
  int i,j,retcode;
  pthread_t a;
  void *retval;

for(j=1;j<=1000;j++)
  {for(i=1;i<=100;i++)
    { retcode = pthread_create(&a, NULL, process, (void *) i);
      if (retcode != 0) printf("create a failed %d (i=%d, j=%d)\n",
retcode,i,j);}

  retcode = pthread_join(a, &retval);
  if (retcode != 0) printf("join a failed %d\n", retcode);
  printf("Pthreads joined! (j=%d)\n",j);
  }
  return 0;}


Zkonci to:

Thread 32: start
create a failed 11 (i=34, j=11)

Proc nejdou dalsi thready vytvorit? Po skonceni funkce by
se mel thread zlikvidovat. Na `ps` se zobrazi vzdy priblizne 
odpovidajici pocet threadu.


		Dekuji
	
			Jiri Dobes

P.S. - skousel jsem to na SGI IRIX64 6.2 a je to uplne stejny.

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jiri Dobes <bobes na bigfoot.com>
http://www.bigfoot.com/~bobes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Další informace o konferenci Linux