关于微软OS创建文件及文件夹重命名并发问题

之前做了一个项目,涉及系统IO,因为种种原因不能使用DB来做并发处理,当时就利用变更文件夹名的方式来抢占文件。多个程序同时将一个文件夹重命名,成功的那个就占用当前文件夹并处理,失败的程序重命名下个文件夹,直到成功为止,以此循环。

压力测试也做过了,没有什么问题,最终就上线了。问题出现了,大数据量作业时,极端情况会出现两个程序同时重命名成功的情况。后续经过测试发现同时创建文件(注意这里指的是文件,并不是文件夹,同时创建文件夹没有测试过)永远不会出现同时成功的情况。以同时创建文件的方式实践了好多年,大数量级的数据都处理过,没发现问题。

其中的原因涉及os底层(这里用的是微软操作系统)没有咨询过厂家,或许有意为之或许是bug。

最终总结下:在微软操作系统中通过代码同时将文件夹重命名可能同时成功,不会抛异常;但是同时创建文件永远不会同时成功。在<=win7,<=server 2008 版本测试,后续版本os没有验证,估计也一样


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值