私は複数のスレッドを持つクラスでlog4netを使用していますが、私は簡単な質問がありました。 log4net.ILogインターフェイスのプロパティとメソッドをチェックするときにreadlock/writelockを入力する必要がありますか?共有インターフェースとReaderWriterLockSlim
私は私が持っていると述べたクラスの先頭にlog4netの例から提案された方法を使用しています:
Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(decType)
とクラスがそれと対話する複数のスレッドを伴うため、私は私が使用ReaderWriterLockSlim
インスタンスを持っています自分の変数と競合することがないようにしてください。
If Me.ReaderWriterLockSlim.TryEnterUpgradableReadLock(-1) Then
If log.IsWarnEnabled Then
If Me.ReaderWriterLockSlim.TryEnterWriteLock(-1) Then
log.Warn("Log Message Here")
Me.ReaderWriterLockSlim.ExitWriteLock()
End If
End If
Me.ReaderWriterLockSlim.ExitUpgradeableReadLock()
End If
それとも、私は単にこれを行うことができます:
If log.IsWarnEnabled Then log.Warn("Log Message Here")
P.S.を要約するので、私はこのような何かをしないといけない安全なスレッドを練習してることを確認したい場合はい、それは荒い擬似コードですが、私は実際には 'ReaderWriterLockSlim'という名前のReaderWriterLockSlim
のインスタンスを持っていません。
編集スティーブンのおかげで、私は最近、多くのLinuxの作業に行ってきました。ああ、私は抵抗できないので、「sudoはスティーブンを砂にする」 –