Problema de sección crítica

19/08/2003 - 15:49 por Juan David | Informe spam
Hola...

Mi duda consiste en lo siguiente...

Tengo una pagina que genera un registro de los eventos
realizados por cada uno de los usuarios. Este registro
de eventos lo hago por medio de un archivo xml en el cual
voy insertando la información correspondiente a cada
evento.

El problema se presenta cuando muchos usuarios quieren
ingresar al archivo a insertar su información...
Entonces necesito algún mecanismo de semaforos o candados
que me permita solucionar este problema.

Si alguien tiene un aporte les agradeceria su
colaboración.

Gracias.

Suerte y pulso
 

Leer las respuestas

#1 Michael Giagnocavo [MVP]
19/08/2003 - 21:15 | Informe spam
Si tienes muchos usuarios, debes usar un DB.

Si quieres tener una seccion critical, puedes usar lock en C# o
SyncLock en VB.NET (ambos usan System.Threading.Monitor).

Por ejemplo:

private static XmlDocument document;
public static void InsertData(string data) {
lock(document) {
// Update data
// Save to disk
}
}

El problema es que es serial. Si los usuarios estaran solo anadiendo
informacion, puedes usar un ReaderWriterLock, y dejar que varios
threads escriban, y tener otro solo para escribir al disco. Tambien
sugiero que escribis a un archivo temporal, y si la escritura tuvo
exito, copiarlo encima del archivo original. Asi evitaras un poco el
problema de corrupcion de datos.

Realmente, debes usar un DB. Usa MSDE (SQL Server Desktop) -- es
gratuito.
-mike
MVP


"Juan David" wrote in message
news:0fbc01c36658$c80b6110$
Hola...

Mi duda consiste en lo siguiente...

Tengo una pagina que genera un registro de los eventos
realizados por cada uno de los usuarios. Este registro
de eventos lo hago por medio de un archivo xml en el cual
voy insertando la información correspondiente a cada
evento.

El problema se presenta cuando muchos usuarios quieren
ingresar al archivo a insertar su información...
Entonces necesito algún mecanismo de semaforos o candados
que me permita solucionar este problema.

Si alguien tiene un aporte les agradeceria su
colaboración.

Gracias.

Suerte y pulso

Preguntas similares