1111

stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);其中由FileShare.read修改为FileShare.ReadWrite,可以使得同时进行读写。经过测试,默认情况下是不允许同时读写的,如果不改或者是不加是出现异常的,即不允许。同时读写时不会发生异常,这个我已经经过测试。如果不改就会出现异常,无论是写的线程先启动,然后再启动读线程,还是先读后写,都会出现异常,这个我已经写代码测试了。另外,至于同时写觉得是不允许的,即必须在写线程上加锁。(都已经过代码测试了)

但是008在聊天中提到:

我是你的影迷 9:48:54 在吗?刚才测试了一下,多个线程同时写一个日志文件,会出现冲突,但是只要加上锁机制就没事了。为什么还需要像你昨天说的“被多线程调用,那么你就应该设计成,外面调用时,只是把消息写到队列里,然后类里一个线程将队列的信息逐个写到文件里”这么复杂呢?做这么复杂有什么好处呢? 帮我调程序热心肠 9:52:37 如果你用了锁,那么其他线程就会等待锁释放,然后你就会因为写日志而造成时间上的浪费,但是如果你仅仅写到队列中,再由一个固定的线程将队列里的消息一个个写入文件,那么你外面调用的线程就只需要添加消息到队列,然后就可以继续执行后面的工作了 帮我调程序热心肠 9:53:26 假设你有十个用户一起写文件,你写一次文件耗费1秒钟,那么你的第10个用户就需要等待10秒才能继续后面的工作。 这样效率是非常低的 我是你的影迷 9:53:45 我是你的影迷 9:54:01 确实是这样。 我是你的影迷 9:54:25 我咋没想到、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值