多个工作进程调用HttpReceiveHttpRequest

时间:2013-06-28 04:23:30

标签: c++ windows http process worker

我想使用Windows HTTP Server API 2.0围绕我的旧C ++代码包装RESTful Web服务。我从MSDN中的示例应用程序开始,将其更改为使用2.0 API,然后将应用程序拆分为三个进程:创建命名队列和URL组的控制器应用程序以及作为控制器应用程序的子进程的两个相同的工作进程。两个工作程序同步调用HttpReceiveHttpRequest并等待传入​​的请求。当他们收到请求时,他们会在再次调用HttpReceiveHttpRequest之前调用Sleep(5000)等待5秒。这允许我在一个工作进程仍在响应第一个请求时从我的浏览器发出第二个请求。

一个工作进程获取第一个请求并等待。但是,第二个请求不会按要求由第二个工作进程处理。相反,第一个工作进程获取第二个请求。如何将传入的请求分配到我的工作进程中?我希望每个请求都会转到HttpReceiveHttpRequest中等待的第一个工作进程。如果第一个工作进程仍在忙于处理请求,它将检查第二个工作进程。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我已经找到了问题所在。我正在使用带有两个选项卡的Firefox,这两个选项卡都具有相同的URL(http://127.0.0.1:80/test),然后执行全部刷新。显然,FF不会同时发出这两个页面请求,但发送一个,等待响应,然后发送另一个,即使选项卡中的动画看起来它们同时被发送!如果我将IE用于一个选项卡而FF用于另一个选项卡,那么我会得到重叠的请求,我的示例应用程序会按预期使用两个工作进程!也适用于两个IE选项卡。只有FF表现出这种奇怪的行为。