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