记录日志是很多项目都必须有的功能,同时有多个用户登陆进行操作,同时要求记录日志的情况也会发生,而类似在本地硬盘写入日志的操作相对与CPU的处理速度是很慢的,而多个用户同时读写文件也会产生同步的问题,使用队列或许是解决问题的一种方式。
一、定一个一个处理队列的类 TraceProcessor,并通过其中的Start()方法启动一个线程去处理队列
二、定义一个队列 TraceQueue,并在其中声明一个TraceProcessor,用于通知处理器处理队列中的日志请求。
三、定义一个响应请求的类 TraceWrite在TraceWrite中声明一个队列和一个队列处理器。
当TraceWrite收到请求时,进行入队操作,在入队的同时通知处理器有新入队(TraceProcessor.Notify())。
而TraceProcessor 只负责处理队列中的请求,处理后出对
说明:
1. 在进行入队和出队操作时,需要使用lock关键字锁定队列。
2. 在TraceProcessor中声明一个AutoResetEvent实例,在入队时,对其进行set()操作,每次处理完一个请求进行WaitOne()操作。
3. 全部实现过程中使用一个队列,一个线程,在不满足需求的情况下,可以增加线程和队列。
4. 具体是否能够完全解决阻塞问题,对于处理速度和IO操作的速度差异有多大改变有待于进一步测试。