Linux - Problema 500 g_thread_create

 
Vista:

Problema 500 g_thread_create

Publicado por esther (2 intervenciones) el 26/08/2007 18:49:20
Hola a todos, quiero crear 500 hilos y que cada hilo me cree un fichero y escriba en él la fecha y la hora actual.
Descripción del hardware:
- CPU: Intel (R) Pentium (R) 4 CPU 1.60 GHz
- RAM: 256 MB
Descripción Paquetes:
- SO: White Box Enterprise 4.0
- Glibc 2.3.4-3
- Glib2-2.4.7-1
- Glib2-devel-2.4.7-1
- Glibc-devel-2.3.4-2
- Gcc 3.4.3-9
El problema que tengo es que si utilizo los hilos de la glib (g_thread) me permite crear 302 hilos, y me da el siguiente mensaje de error:
GThread-ERROR**: file gthred-posix.c: line 351() error ‘No se pudo asignar memoria during ‘ pthread-create
En cambio si utilizo los hilos de C (pthread) si me crea el número de hilos que deseo (500) . ¿Alguien sabe por qué me pasa esto ?
Código que estoy usando:
#include<gtk/gtk.h>
#include<stdlib.h>
#include<glib.h>
#include<stdio.h>
#include<time.h>
#include<dlfcn.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<pthread.h>
GThreadFunc funcion1(gint i)
{
FILE *FCH;
gchar fecha[80]={0}, cadena[100]={0},nfuncion[5]={0};
struct tm *fecha_hora;
time_t cronometro;
while(1)
{
sprintf(nfuncion,”%d”,i);
strcpy(cadena,”fic”);
strcat(cadena,nfuncion);
FCH=fopen(cadena,”r+”);
If(FCH == NULL)
{
FCH=fopen(cadena,”a+”);
Fclose(FCH);
FCH=fopen(cadena,”r+”);
}
time(&cronometro);
fecha_hora=localti me(&cronometro);
strftime(fecha,80,”[%d-%m-%Y][%X]\n”,fecha_hora);
fseek(FCH,0,SEEK_END);
fprintf(FCH,fecha);
fclose(FCH);
usleep(1000);
}
}
void iniciarFF500()
{
gint i=0;
GThread *hilo
while(i<500)
{
Hilo=g_thread_create(funcion1, I ,TRUE,NULL);
i++;
}
}
gint main(int argc,char *argv[])
{
if(g_thread_supported())
g_thread_init(NULL);
gtk_init(&argc,&argv);
iniciarFF500();
g_threads_enter();
gtk_main();
gdk_threads_leave();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema 500 g_thread_create

Publicado por n0str0m0 (1503 intervenciones) el 27/08/2007 17:06:11
Interesante. Glib debería utilizar unos hilos muy similares a los the POSIX, pero seguramente estén un poco más sobrecargados ya que la Glib proporciona hilos portables que funcionarán tanto en Linux, como Solaris, FreeBSD o en cualquier sistema para el que esté portado.

No estoy seguro de que pueda haber una variable en el runtime de gtk que limite el número de hilos, pero puedes intentar buscar por la web

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar