ReaderWriterLockSlim.CurrentReadCount プロパティ

定義

読み取りモードでロックに入った一意のスレッドの総数を取得します。

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

プロパティ値

読み取りモードでロックに入った一意のスレッドの数。

次の例では、 プロパティを使用 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

注釈

ロックで再帰が許可され、スレッドが複数回読み取りモードに入った場合でも、スレッドは 1 回だけカウントされます。

このプロパティは、デバッグ、プロファイリング、ログ記録の目的でのみ使用し、アルゴリズムの動作を制御する場合は使用しません。 結果は、計算されるとすぐに変更される可能性があります。 したがって、このプロパティに基づいて決定することは安全ではありません。

適用対象