首页 / 知识
关于asp.net:多线程环境中的文件访问策略(Web App)
2023-04-14 01:11:00

File Access Strategy in a Multi-Threaded Environment (Web App)我有一个文件,该文件是从Web服务获取并在Web应用程序本地缓存的某些数据的XML表示。想法是该数据是非常静态的,但是可能会发生变化。因此,我将其设置为缓存到文件,并在其上贴上监视器以检查其是否已删除。删除后,文件将从其源刷新并重建。 我现在遇到了问题,因为很明显,在多线程环境中,当它仍在读取/写入文件时尝试访问数据时,它会崩溃。 这使我感到困惑,因为我添加了一个要锁定的对象,并且在读取/写入期间始终将其锁定。据我了解,尝试从其他线程进行的访问将被告知"等待",直到锁被释放? 让我知道,我是多线程开发的真正新手,所以我完全愿意接受这对我来说是一个麻烦:)
编辑 对不起-我应该说这是使用ASP.NET 2.0:) 这是我用来确保文件未被另一个进程锁定的代码。这不是百分百的万无一失,但大多数情况下它都能完成工作:
显然,您可以调整超时和重试以适合您的应用程序。我用它来处理需要一段时间才能写入的巨大FTP文件。 好吧,我一直在努力,最终创建了一个压力测试模块,基本上是从几个线程中剔除我的代码(参见相关问题)。 从现在开始,在我的代码中查找漏洞要容易得多。事实证明,我的代码实际上并不是遥不可及的,但是有一定的逻辑路径可以进入,这基本上导致了读/写操作的堆积,这意味着如果不及时清除它们,它将繁荣! 一旦我取出来,再次进行压力测试,一切正常! 因此,我并没有在文件访问代码中做任何特别的事情,只是确保在适当的地方(即读或写时)使用了 您可以使用临时名称(" data.xml_TMP")创建文件,并在准备好名称后将其更改为应该使用的名称。这样,在准备就绪之前,没有其他进程可以访问它。 如果要锁定存储为静态对象的对象,则该锁应适用于同一应用程序域中的所有线程,但是也许您需要上载代码示例,以便我们查看有问题的行。铅> 也就是说,一种想法是检查IIS是否配置为以Web Garden模式运行(即,执行应用程序的进程超过1个),这会破坏锁定逻辑。尽管您可以使用互斥锁解决这种情况,但重新配置应用程序以在单个进程中执行将更容易,尽管明智的做法是在弄乱Web Garden设置之前和之后检查性能,因为它可能会影响性能。 如何使用
|
最新内容
相关内容
Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,python的数据类型
python的数据类型,数字,较大,数据,培训,变量,表示,字符串,赋值,常量,小数,1.整型Python可以处理任意大小的整数,当然包括负整数,在程序中的表示Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python数据结构的时间复杂性
Python数据结构的时间复杂性,时间,项目,情况,平均,复杂度,培训,术语,数据,状态,操作,1.让我们了解大O符号的含义是什么?在算法中执行许多操作数据科学中必须了解的Python核心库
数据科学中必须了解的Python核心库,数据,生产,代码,标准,分析,培训,图片,工具,统一,涉足,python有三个核心数据科学库,在此基础上还创建了许多使用Python处理JSON格式的数据
使用Python处理JSON格式的数据,数据,代码,名称,信息,培训,对比,灵活,字典,文件,格式,如果你不希望从头开始创造一种数据格式来存放数据,JSON是Python编程中3个常用的数据结构和
Python编程中3个常用的数据结构和算法,代码,电话号码,销售额,有限,情况,分解,异常,名称,平均,位置,python内置了许多非常有用的数据结构,比如如何用Python进行数据分析
如何用Python进行数据分析,数据,分析,项目,分析师,基础,代码,工具,工作,流程,公司,1.为什么选择Python进行数据分析?Python是一门动态的、面Python变量数据类型的转换
Python变量数据类型的转换,代码,数据,培训,信息,字符串,类型,变量,整数,浮点,函数,虽然Python是弱类型编程语言,不需要像Java或C语言那样还要Python中可以hash的数据类型
Python中可以hash的数据类型,数据,地址,策略,超额,检测,培训,平均,增长,示例,数据类型,在Python中,仅仅只有不可变数据类型可以被hash,然而每