首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理异步请求的ASP.NET Web 2

处理异步请求的ASP.NET Web 2
EN

Stack Overflow用户
提问于 2016-06-21 14:11:32
回答 1查看 662关注 0票数 1

当两个客户机同时调用我的Web方法时,我试图确定会发生什么。为此,我在Python中生成两个异步请求:

代码语言:javascript
运行
复制
rs = (grequests.post(url, data = json), grequests.post(url, data = json))
grequests.map(rs)

请求在我的WebApi中调用一个非异步方法,它正在改变我的资源,这是一个静态类实例。根据我所理解的,API请求不应该同时运行,这就是我想要的,因为我不希望这两个请求相互干扰。但是,如果我在API方法中设置了一个断点,那么这两个请求似乎会同时运行(并行)。这会导致一些不必要的结果,因为这两个请求正在并行地更改相同的资源。

有没有办法确保Web非并发地处理请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 14:40:46

对Web API方法的请求由IIS应用程序池(线程池)处理,该池为它接收到的每个同步请求初始化一个线程。无法告诉IIS非并发地运行这些线程。

我相信您对什么是“非异步”Web方法有误解。当Web方法是异步的,这意味着当它处于等待状态时,它将共享它的应用程序池线程。这具有其他请求不需要初始化新线程(这有点昂贵)的优点。它还有助于最小化并发线程的数量,从而减少应用程序池必须排队的线程数。

对于非异步方法,IIS应用程序池将为每个请求初始化一个新线程,即使有非活动线程可用。而且,它不会与任何其他请求共享该线程。

所以对你问题的简短回答是否定的。无法确保非并发地处理Web请求。的评论是正确的。在请求期间,您必须锁定共享资源。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37946804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档