我正在开发一个httpHandler来为我的web应用程序提供调整大小的图像。如果请求的图像和指定的sixe不存在,我将创建该图像。
问题是两个(或多个)请求是否同时到达服务器并要求创建必须创建的映像。我怎样才能防止这种情况发生?如何在第一次创建图像请求的时间内锁定代码?创建映像时,第二个(和后续)请求将从文件系统获取创建的映像。
感谢名单!
// Nicke
答案 0 :(得分:0)
只需使用C#简单锁定机制即可。创建一个共享给所有线程的静态对象(可能使用单例来包装此操作)并使用double checked锁定:
if (!pictureExists)
{
lock (_syncRoot) // This is the shared object to lock by
{
if (!pictureExists) // double checked
{
// create it
}
}
}