ReaderWriterLock.IsReaderLockHeld Propriedade
Definição
Obtém um valor que indica se o thread atual mantém um bloqueio de leitor.Gets a value indicating whether the current thread holds a reader lock.
public:
property bool IsReaderLockHeld { bool get(); };
public bool IsReaderLockHeld { get; }
member this.IsReaderLockHeld : bool
Public ReadOnly Property IsReaderLockHeld As Boolean
Valor da propriedade
true Se o thread atual mantiver um bloqueio de leitor; caso contrário, false .true if the current thread holds a reader lock; otherwise, false.
Exemplos
O exemplo de código a seguir demonstra como usar o IsReaderLockHeld para evitar deadlocks.The following code example demonstrates how to use IsReaderLockHeld to avoid deadlocks.
using namespace System;
using namespace System::Threading;
int main()
{
ReaderWriterLock^ rwLock = gcnew ReaderWriterLock;
rwLock->AcquireWriterLock( Timeout::Infinite );
rwLock->AcquireReaderLock( Timeout::Infinite );
if ( rwLock->IsReaderLockHeld )
{
Console::WriteLine( "Reader lock held." );
rwLock->ReleaseReaderLock();
}
else
if ( rwLock->IsWriterLockHeld )
{
Console::WriteLine( "Writer lock held." );
rwLock->ReleaseWriterLock();
}
else
{
Console::WriteLine( "No locks held." );
}
if ( rwLock->IsReaderLockHeld )
{
Console::WriteLine( "Reader lock held." );
rwLock->ReleaseReaderLock();
}
else
if ( rwLock->IsWriterLockHeld )
{
Console::WriteLine( "Writer lock held." );
rwLock->ReleaseWriterLock();
}
else
{
Console::WriteLine( "No locks held." );
}
}
using System;
using System.Threading;
class LockHeld
{
static void Main()
{
ReaderWriterLock rwLock = new ReaderWriterLock();
rwLock.AcquireWriterLock(Timeout.Infinite);
rwLock.AcquireReaderLock(Timeout.Infinite);
if(rwLock.IsReaderLockHeld)
{
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else if(rwLock.IsWriterLockHeld)
{
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else
{
Console.WriteLine("No locks held.");
}
if(rwLock.IsReaderLockHeld)
{
Console.WriteLine("Reader lock held.");
rwLock.ReleaseReaderLock();
}
else if(rwLock.IsWriterLockHeld)
{
Console.WriteLine("Writer lock held.");
rwLock.ReleaseWriterLock();
}
else
{
Console.WriteLine("No locks held.");
}
}
}
Imports System.Threading
Public Class LockHeld
<MTAThread> _
Shared Sub Main()
Dim rwLock As New ReaderWriterLock()
rwLock.AcquireWriterLock(Timeout.Infinite)
rwLock.AcquireReaderLock(Timeout.Infinite)
If rwLock.IsReaderLockHeld Then
Console.WriteLine("Reader lock held.")
rwLock.ReleaseReaderLock()
Else If rwLock.IsWriterLockHeld Then
Console.WriteLine("Writer lock held.")
rwLock.ReleaseWriterLock()
Else
Console.WriteLine("No locks held.")
End If
If rwLock.IsReaderLockHeld Then
Console.WriteLine("Reader lock held.")
rwLock.ReleaseReaderLock()
Else If rwLock.IsWriterLockHeld Then
Console.WriteLine("Writer lock held.")
rwLock.ReleaseWriterLock()
Else
Console.WriteLine("No locks held.")
End If
End Sub
End Class