ReaderWriterLockSlim.CurrentReadCount Свойство

Определение

Получает общее количество уникальных потоков, вошедших в блокировку в режиме чтения.

public:
 property int CurrentReadCount { int get(); };
public int CurrentReadCount { get; }
member this.CurrentReadCount : int
Public ReadOnly Property CurrentReadCount As Integer

Значение свойства

Int32

Количество уникальных потоков, вошедших в блокировку в режиме чтения.

Примеры

В следующем примере показано, как использовать CurrentReadCount свойство для создания записи журнала событий, если число потоков в режиме чтения превышает пороговое значение.

using (ReaderWriterLockSlim rwLock = new ReaderWriterLockSlim()) {
Using rwLock As New ReaderWriterLockSlim()
if (!EventLog.SourceExists("MySource"))
{
    EventLog.CreateEventSource("MySource", "MyPerformanceLog");
}
EventLog performanceLog = new EventLog();
performanceLog.Source = "MySource";
If Not EventLog.SourceExists("MySource") Then
    EventLog.CreateEventSource("MySource", "MyPerformanceLog")
End If
Dim performanceLog As New EventLog()
performanceLog.Source = "MySource"
int readCt = rwLock.CurrentReadCount;
if (readCt > READ_THRESHOLD)
{
    performanceLog.WriteEntry(String.Format(
        "{0} reader threads; exceeds recommended maximum.", readCt));
}
Dim readCt As Integer = rwLock.CurrentReadCount
If readCt > READ_THRESHOLD Then
    performanceLog.WriteEntry(String.Format( _
        "{0} reader threads; exceeds recommended maximum.", readCt))
End If

Комментарии

Поток подсчитывается только один раз, даже если блокировка разрешает рекурсию, и поток несколько раз вошел в режим чтения.

Используйте это свойство только для отладки, профилирования и ведения журнала, а не для управления поведением алгоритма. Результаты могут измениться, как только они были вычислены. Поэтому небезопасно принимать решения на основе этого свойства.

Применяется к