ASP.NET中的多线程

时间:2020-03-05 18:49:30  来源:igfitidea点击:

在asp.net中,我们必须注意哪种多线程问题?

解决方案

回答

程序化缓存是我立即想到的一个领域。这是一个伟大的功能,需要仔细使用。由于它是跨请求共享的,因此必须在更新之前对其加锁。

我要检查的另一个地方是访问文件系统的任何代码,例如写入日志文件。如果一个请求对文件具有读写锁定,则其他并发请求如果处理不当,将会出错。

回答

需要注意的一件事是过期(我认为httpContext确实存在),如果我们将其用于"即发即弃"的操作,请记住,如果在完成操作之前运行了asp.net清理代码,就会突然出现,我们将无法访问某些信息。

回答

如果这是针对Web服务的,则绝对应该考虑线程池。太多的线程会使应用程序陷入停顿,因为它们最终将开始争夺CPU时间。

这是用于文件或者网络IO吗?如果是这样,我们还应该考虑使用异步IO。编写程序可能会比较麻烦,但是我们不必担心会立刻产生太多线程。

回答

从ASP.NET页的代码隐藏中生成线程是有风险的,因为辅助进程有时会被回收,并且线程会死掉。

如果由于用户在网页上的操作而需要启动长时间运行的进程,那么最好的选择是在MSMQ中发出一条消息,并让一个单独的后台服务监视队列。该服务可能需要花费很长时间才能完成任务,并且网页几乎会立即完成其工作。我们可以通过对Web方法的异步调用来完成相同的操作,但不要依赖于Web方法完成工作时获取响应。从代码的背后,它需要快速解雇。

回答

IIS配置中没有25个线程总数的限制吗?我相信至少在IIS 6中。如果超过该限制,可能会发生有趣的事情(阅读:loooooooong响应时间)。