我想使用Windows HTTP Server API 2.0來包裝我的遺留C++代碼的RESTful Web服務。我從MSDN的示例應用程序開始,將其更改爲使用2.0 API,然後將應用程序分成三個進程:一個控制器應用程序,它創建一個命名隊列和url組,以及兩個相同的工作進程,它們是控制器應用程序的子進程。兩個工作者都同步調用HttpReceiveHttpRequest並等待傳入的請求。當他們收到請求時,他們會調用Sleep(5000)等待5秒鐘,然後再次調用HttpReceiveHttpRequest。這允許我從我的瀏覽器中發出第二個請求,同時一個工作進程仍然響應第一個請求。多個工作進程調用HttpReceiveHttpRequest
一個工作進程獲取第一個請求並等待。但是,第二個請求不會按照請求由第二個工作進程處理。相反,第一個工作進程獲得第二個請求。我怎樣才能讓傳入的請求分佈在我的工作進程中?我預計每個請求都會去等待HttpReceiveHttpRequest中的第一個工作進程。如果第一個工作進程仍在忙於處理請求,它將檢查第二個工作進程。我究竟做錯了什麼?
我意識到我如何描述HttpReceiveHttpRequest處理是有點關閉的。 HttpReceiveHttpRequest中的每個工作進程都試圖從同一個命名隊列中獲取下一個請求。這些進程中只有一個會刪除第一個請求。當第二個請求放入隊列中時,第二個工作進程應該是唯一一個等待請求的進程,因此應該刪除並處理第二個請求。 –