我使用log4net的在多線程類,我有一個簡單的問題。在log4net.ilog界面上檢查屬性並調用方法時,是否需要輸入readlock/writelock?共同的接口和ReaderWriterLockSlim
我使用從log4net的例子所提出的方法,以便在上面說I類有:
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")
附:是的,這是粗略的僞代碼,我實際上沒有一個名爲'ReaderWriterLockSlim'的實例ReaderWriterLockSlim
。
感謝您的編輯史蒂芬,我一直在做得多Linux的工作最近。哦,因爲我無法抗拒:「sudo make [steven] sandhatich」。 – 2009-08-27 20:54:27