C# 验证文件共享模式下的多线程文件写入

目录

写在前面

代码实现 

调用示例

加锁的情况

不加锁的情况

总结


写在前面

原以为设置了文件共享模式为允许随后写入(FileShare.Write),就可以实现多线程下的正常写入操作,实际情况是使用该模式后不会报线程独占问题,但是写入的内容是不完整的,比如开了n个线程,真正写入的内容不仅时序上不连续,且内容也不完整;还是需要额外加锁后才能保证时序及内容的完整性。

代码实现 

using System.Text;

public class Program
{
    static int SuccessCount = 0;
    static int FailureCount = 0;
    static ReaderWriterLockSlim WriteLock = new ReaderWriterLockSlim();
    static object Lock = new object();

    static void Main(string[] args)
    {

        Console.WriteLine("Hello, World!");

        var result = Parallel.For(0, 30, action =>
        {
            WriteTest();
        });

        Console.WriteLine("写入中...");
        Console.ReadLine();
    }

    static void WriteTest()
    {
        try
        {
            WriteLock.EnterWriteLock();
            //lock (Lock)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值