c# – 锁定文件创建的最佳方式(最佳性能)

c# – 锁定文件创建的最佳方式(最佳性能),第1张

概述我有一个Web应用程序将图像返回到我的前端. 在这个应用程序中会发生什么:当对特定图像发出请求时,应用程序检查图像是否已存在于磁盘上;如果存在则返回图像. 当磁盘上不存在映像时,我的问题就开始了.在这种情况下,对于磁盘上不存在的同一图像,同时发出两个请求.当两个线程尝试同时在磁盘上创建相同的文件时,会出现问题. 为了解决这个问题,我尝试做的是在创建磁盘映像时创建一个Mutex.但它有一个问题:由于 我有一个Web应用程序将图像返回到我的前端.
在这个应用程序中会发生什么:当对特定图像发出请求时,应用程序检查图像是否已存在于磁盘上;如果存在则返回图像.

当磁盘上不存在映像时,我的问题就开始了.在这种情况下,对于磁盘上不存在的同一图像,同时发出两个请求.当两个线程尝试同时在磁盘上创建相同的文件时,会出现问题.

为了解决这个问题,我尝试做的是在创建磁盘映像时创建一个Mutex.但它有一个问题:由于大量的同时请求导致服务器负载很大,服务器崩溃了.

我想问一下你的想法是什么来解决这个问题.或者你会怎么做?

谢谢.

解决方法 您可以尝试以下模式:

>尝试阅读图像(如果成功,则完成)
>尝试使用写锁定创建图像
>仅在“文件在使用异常”中,小延迟(毫秒)
>返回步骤1(重试)

使延迟非常小,只比创建图像所需的时间稍微大一点.
实施重试限制,最多3次左右.

这将允许您使用现有的(文件)锁定机制

总结

以上是内存溢出为你收集整理的c# – 锁定文件创建的最佳方式(最佳性能)全部内容,希望文章能够帮你解决c# – 锁定文件创建的最佳方式(最佳性能)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1230767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存