使用队列解决多用户 使用日志功能的请求

   记录日志是很多项目都必须有的功能,同时有多个用户登陆进行操作,同时要求记录日志的情况也会发生,而类似在本地硬盘写入日志的操作相对与CPU的处理速度是很慢的,而多个用户同时读写文件也会产生同步的问题,使用队列或许是解决问题的一种方式。

 

   一、定一个一个处理队列的类 TraceProcessor,并通过其中的Start()方法启动一个线程去处理队列

   二、定义一个队列 TraceQueue,并在其中声明一个TraceProcessor,用于通知处理器处理队列中的日志请求。

   三、定义一个响应请求的类 TraceWrite在TraceWrite中声明一个队列和一个队列处理器。

 

   当TraceWrite收到请求时,进行入队操作,在入队的同时通知处理器有新入队(TraceProcessor.Notify())。

   而TraceProcessor 只负责处理队列中的请求,处理后出对

 

   说明:

   1. 在进行入队和出队操作时,需要使用lock关键字锁定队列。

   2. 在TraceProcessor中声明一个AutoResetEvent实例,在入队时,对其进行set()操作,每次处理完一个请求进行WaitOne()操作。

   3. 全部实现过程中使用一个队列,一个线程,在不满足需求的情况下,可以增加线程和队列。

   4. 具体是否能够完全解决阻塞问题,对于处理速度和IO操作的速度差异有多大改变有待于进一步测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值