如果在写日志的时候,出现多个线程同时向Error日志文件中写入日志,则可能导致IO(文件)占用异常。
这时候我们需要使用锁来控制,让后面的写文件操作等待前面的操作完成,再进行写入操作。
如以下代码(C#)
public class SynchronizedFile
{
private static ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
/// <summary>
/// 线程安全的写入文件操作
/// </summary>
/// <param name="action"></param>
public static void WriteFile(Action action)
{
cacheLock.EnterWriteLock();
try
{
action.Invoke();
}
finally
{
cacheLock.ExitWriteLock();
}
}
}
以上代码中调用WriteFile方法传入一个委托(其中做写文件的操作)即可