Re: [GENERAL] Concurrencia

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Mario Gonzalez <gonzalemario(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, editores(at)editores(dot)com(dot)co, postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [GENERAL] Concurrencia
Date: 2006-03-16 16:54:39
Message-ID: 20060316165439.GJ15329@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda pgsql-general

Mario Gonzalez escribió:

> Mhh, si te refieres a algun error de programacion en el manejo de
> memoria (memory leak) bueno, puede suceder. Como un ejemplo muy simple
> y adrede mira el caso de esta funcion
>
> void
> example()
> {
> char *b;
> b = (char *)malloc(sizeof(char *));
> }

Observa que Postgres rara vez hace esto. Generalmente se usa palloc()
en lugar de malloc(). La diferencia es que palloc() registra cada
bloque emplazado ("allocated") como perteneciente a un "contexto". Con
cierta periodicidad el contexto puede "resetearse", en cuyo caso todos
los bloques emplazados se liberan automaticamente. Por ejemplo tu
funcion podria hacer algo asi:

void example() {
MemoryContext context,
oldcontext;
int i;

context = AllocSetContextCreate( ... algunos parametros ...);
oldcontext = MemoryContextSwitchTo(context);

for (i = 0; i < 1000; i++) {
char *b;
b = palloc(sizeof(char *));
}

MemoryContextSwitchTo(oldcontext);
AllocSetDelete(context);
}

por mucho que tu llames a esta funcion un millon de veces, nunca va a
usar mas de de (1000 * sizeof(char*)), aunque nunca hagas pfree().

Pero no entiendo que tiene que ver esto con la pregunta original :-)

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Gonzalez 2006-03-16 17:19:22 Re: [GENERAL] Concurrencia
Previous Message Leonel Nunez 2006-03-16 15:00:50 Re: Replicacion de Datos

Browse pgsql-general by date

  From Date Subject
Next Message Scott Ribe 2006-03-16 16:57:46 Re: Wisconsin Circuit Court Access (WCCA) on
Previous Message Scott Ribe 2006-03-16 16:43:34 Error I don't understand, losing synch with server