C# 同步映像的读写访问

C# 同步映像的读写访问,c#,.net,image,web-applications,synchronization,C#,.net,Image,Web Applications,Synchronization,我们在服务器上有一个根据代码定期修改的图像。这是一种平铺马赛克,所以当用户上传照片时,新的平铺就会出现 网站用户应该可以随时访问该网站进行查看 问题是同步。当读写同时发生时,有时图像无法正确加载到网站上 在这种情况下,同步图像读写的正确方法是什么?一种方法是有两个图像,第一个用于读取,第二个用于修改 修改在第二个映像上执行并同步,以便一个用户一次修改它(如果不想锁定用户调用,可以将修改排队) 执行修改后,您可以将更改提交到第一个图像,然后用户可以获得修改 在这种方法中,用户可能会晚一点得到修改(

我们在服务器上有一个根据代码定期修改的图像。这是一种平铺马赛克,所以当用户上传照片时,新的平铺就会出现

网站用户应该可以随时访问该网站进行查看

问题是同步。当读写同时发生时,有时图像无法正确加载到网站上


在这种情况下,同步图像读写的正确方法是什么?

一种方法是有两个图像,第一个用于读取,第二个用于修改

修改在第二个映像上执行并同步,以便一个用户一次修改它(如果不想锁定用户调用,可以将修改排队)

执行修改后,您可以将更改提交到第一个图像,然后用户可以获得修改


在这种方法中,用户可能会晚一点得到修改(取决于提交时间)

如果第一个映像仍在写入文件时被请求怎么办?提交过程不需要任何时间(复制第二个映像并删除第一个映像)因此,在资源被修改之前锁定它可能是安全的。也许是信号量?这幅画有多大?写起来需要多长时间?即使是5MB的图像也只需要几毫秒的时间来写入,与通过web将图像传输到客户端的时间相比,这算不了什么,因此以百分比计算,它应该是不可察觉的。我的意思是,现代磁盘的速度为100-150MB/s,我们中很少有人的Internet连接速度超过80Mbits/s(10MB/s),因此磁盘速度快10倍,写入延迟应该被Internet传输时间掩盖。或者你的设置不同?