2009-10-01 26 views
5

Estoy creando un sitio web ASP.net que maneja miles de solicitudes y todo proviene de un objeto principal que todos comparten para leerlo. Estoy tratando de entender bien estos diferentes tipos de bloqueos.entendiendo ¿Bloqueo ayuda?

Algunas preguntas comunes que tengo para cada una.

  1. ¿Cuál es el alcance de cada solicitud de bloqueo, Sesión, de objetos
  2. ¿Cuándo es correcto utilizar uno sobre el otro?
  3. ¿Pueden los usuarios múltiples ejecutar el código en el bloqueo a la vez?
  4. Rendimiento Hit?

1.

public class MyClass 
    { 
     lock 
     { 
     // DO COOL CODE STUFF. 
     } 
    } 

2.

public class MyClass 
{ 
    Application.Lock 
    // DO COOL CODE STUFF. 
    Application.Unlock 
} 

3.

public static object lockObject = new object(); 
public class MyClass 
{  
    lock(lockObject) 
    { 
     // DO COOL CODE STUFF. 
    } 
} 

4.

private static readonly ReaderWriterLockSlim slimLock = new ReaderWriterLockSlim(); 
public class MyClass 
{ 
    slimLock.EnterWriteLock(); 
    // DO COOL CODE STUFF HERE.  
    slimLock.ExitWriteLock(); 
} 

Respuesta

2

Leer la documentación de todas estas cosas:

1)

Application.Lock() and Application.Unlock() 

la cerradura de bloques del método a otros clientes de la modificación de las variables almacenadas en el objeto Application citation

2) No puede hacer esto:

public class MyClass 
{ 
    lock 
    { 
    // DO COOL CODE STUFF. 
    } 
} 

3) El ReaderWriterLockSlim se debe usar si puede tener múltiples clientes leyendo a la vez, pero el acceso de escritura debe tener acceso exclusivo.

4) Este código:

public static object lockObject = new object(); 
public class MyClass 
{  
    lock(lockObject) 
    { 
     // DO COOL CODE STUFF. 
    } 
} 

significará solamente 1 hilo puede ser dentro de ese bloque a la vez. Significado de acceso de lectura serializado.

1

Bloquear un solo objeto no se escalará muy bien. Como alternativa, sugeriría considerar el patrón de diseño Object Pool. Es mucho más capaz de crecer para satisfacer las crecientes demandas de los usuarios.

Cuestiones relacionadas