安全地写入文件

如果在写日志的时候,出现多个线程同时向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方法传入一个委托(其中做写文件的操作)即可