前段时间在做项目时,系统是个多线程程序,几个线程都需要写日志,主线程和通讯线程经常在写日志时打架,为了解决这个问题,考虑在写日志的方法中加锁。代码如下:
/// <summary>
/// 写日志时加锁
/// </summary>
private static object m_Lock = new object();
/// <summary>
/// 写日志文件的接口函数,此函数只向指定的文件写入字符串
/// </summary>
/// <param name="DestFileName"></param>
/// <param name="fmt"></param>
/// <returns></returns>
public static int TP_WriteAppLogFileEx(string DestFileName, string fmt)
{
string strLogFile = System.Environment.CurrentDirectory+"\\Log\\"+DateTime.Now.ToString("yyyyMMdd")+".log";
if (strLogFile != DestFileName)
{
DestFileName = strLogFile;
}
int iWriteAppLogFile = 0;
lock (m_Lock)
{
iWriteAppLogFile=TP_WriteAppLogFile(DestFileName, fmt);
}
return iWriteAppLogFile;
}
public static int TP_WriteAppLogFile(string DestFileName, string fmt)
{
try
{
FileInfo file = new FileInfo(DestFileName);
if (!file.Exists)
{
file.Create();
}
//定位到文件尾
StreamWriter stream = file.AppendText();
//写当前的时间
stream.Write(DateTime.Now.ToString("HH:mm:ss fff "));
//写用户传过来的字符串
stream.WriteLine(fmt);
//最后记着要关了它
stream.Close();
}
catch (Exception e)
{
}
return 0;
}
经过加锁处理后,多线程写日志打架的问题得到了解决。
分享到:
相关推荐
本篇文章介绍了,在C++中为什么多线程读写shared_ptr要加锁的详细说明。需要的朋友参考下
Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)...
Qt两种方法实现多线程的开启,及子线程的安全结束线程,及QMutex加锁,Qt单例化实现
C# 高效线程安全,解决多线程写txt日志类
应用在多线程模式下 线程安全 写txt日志封装应用 调用示例
多线程中.调试过程相对麻烦.此类为方便多线程调试使用.
posix多线程程序设计源码 posix多线程程序设计源码 posix多线程程序设计源码 posix多线程程序设计源码
使用该类可实现C++ 多线程日志的记录,创建了日志记录线程,使用日志等级、队列、信号量、临界区等方法实现记录,可在较高的实时性系统上完成日志记录。
Delphi中用多线程实现日志文件的读写与管理
Win32多线程程序设计全部代码 Win32多线程程序设计全部代码
多线程日志处理 C++实现 参考用例
windowsC++多线程加锁信号量共享内存
Win32多线程程序设计 英文版
POSIX多线程程序设计随书源码,很不错的多线程编程资料
POSIX多线程程序设计:如何使用多线程进行并行计算和提高计算效率。线程程序设计以及一般的线程程序会遇到的问题。
针对多线程程序数据竞争分析与检测困难的问题,提出一种基于隐Markov模型的多线程程序时序分析方法.用随机变量不确定性刻画不同线程之间时序上的交互关系,分析数据竞争条件下程序不确定结果的概率分布情况;建立多线程...
《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、...
多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天
《Win32多线程程序设计》配套代码 《Win32多线程程序设计》配套代码
侯杰翻译Win32多线程程序设计