Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

LockCookie (Estructura)

Define el bloqueo que implementa la semántica de un sistema de escritura y varios sistemas de lectura. Se trata de un tipo de valor.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
public struct LockCookie

El tipo LockCookie expone los siguientes miembros.

  NombreDescripción
Método públicoEquals(LockCookie)Indica si la instancia actual es igual al objeto LockCookie especificado.
Método públicoEquals(Object)Indica si un objeto especificado es un LockCookie y es igual a la instancia actual. (Invalida a ValueType.Equals(Object)).
Método públicoGetHashCodeDevuelve el código hash de esta instancia. (Invalida a ValueType.GetHashCode()).
Método públicoGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método públicoToStringDevuelve el nombre de tipo completo de esta instancia. (Se hereda de ValueType).
Arriba

  NombreDescripción
Operador públicoMiembro estáticoEqualityIndica si dos estructuras de LockCookie son iguales.
Operador públicoMiembro estáticoInequalityIndica si dos estructuras de LockCookie son iguales.
Arriba

El ejemplo siguiente muestra cómo solicitar un bloqueo de lectura, actualizar este bloqueo a un bloqueo de escritura y guardar LockCookie. Después usa LockCookie para volver a degradar a un bloqueo de lectura.

Este código forma parte de un ejemplo más extenso referente a la clase ReaderWriterLock.


// The complete code is located in the ReaderWriterLock
// class topic.
using System;
using System.Threading;

public class Test
{
    // Declaring the ReaderWriterLock at the class level
    // makes it visible to all threads.
    static ReaderWriterLock rwl = new ReaderWriterLock();
    // For this example, the shared resource protected by the
    // ReaderWriterLock is just an integer.
    static int resource = 0;


...


// Shows how to request a reader lock, upgrade the
// reader lock to the writer lock, and downgrade to a
// reader lock again.
static void UpgradeDowngrade(int timeOut)
{
    try
    {
        rwl.AcquireReaderLock(timeOut);
        try
        {
            // It is safe for this thread to read from
            // the shared resource.
            Display("reads resource value " + resource); 
            Interlocked.Increment(ref reads);

            // If it is necessary to write to the resource,
            // you must either release the reader lock and 
            // then request the writer lock, or upgrade the
            // reader lock. Note that upgrading the reader lock
            // puts the thread in the write queue, behind any
            // other threads that might be waiting for the 
            // writer lock.
            try
            {
                LockCookie lc = rwl.UpgradeToWriterLock(timeOut);
                try
                {
                    // It is safe for this thread to read or write
                    // from the shared resource.
                    resource = rnd.Next(500);
                    Display("writes resource value " + resource);
                    Interlocked.Increment(ref writes);
                }        
                finally
                {
                    // Ensure that the lock is released.
                    rwl.DowngradeFromWriterLock(ref lc);
                }
            }
            catch (ApplicationException)
            {
                // The upgrade request timed out.
                Interlocked.Increment(ref writerTimeouts);
            }

            // When the lock has been downgraded, it is 
            // still safe to read from the resource.
            Display("reads resource value " + resource); 
            Interlocked.Increment(ref reads);
        }        
        finally
        {
            // Ensure that the lock is released.
            rwl.ReleaseReaderLock();
        }
    }
    catch (ApplicationException)
    {
        // The reader lock request timed out.
        Interlocked.Increment(ref readerTimeouts);
    }
}


...


}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Este tipo es seguro para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft