我使用NetTcpBinding
服務和BasicHttpBinding
服務創建了一個應用程序。 通過這些服務,客戶端嚮應用程序發送請求:這些請求必須放入Queue
對象中,即入站請求的隊列。由多個線程併發訪問隊列
- 這兩個服務都必須允許來自客戶端的併發呼叫。
- 這意味着這兩個服務都應該同時訪問隊列以添加接收到的請求。
- 另外,另一個線程必須訪問隊列才能獲取和處理請求。
我可以使用ConcurrencyMode.Multiple
,所以很多電話可以同時進行。但是,這並不保證對隊列的併發訪問。我應該把兩個ServiceHost
放在兩個不同的線程中嗎?例如:
- 第一個線程出隊並處理隊列中的請求。
- 第二個線程實例化
NetTcpBinding
服務並將新請求排入隊列。此外,它通過回叫發送任何回覆。 - 第三個線程實例化
BasicHttpBinding
服務並將新請求排入隊列。
這是我的想法。 因爲我幾乎是一個新手,如果你能給我一些建議,我將不勝感激。 也許我應該開始編寫三個併發訪問隊列的線程:目前前兩個線程可能會將隨機請求排入隊列,而第三個線程會使用這些請求。
你必然要排隊?你可以使用ConcurrentQueue或BlockingCollection嗎?這是一個非常標準的生產者/消費者問題。 – Joe 2012-02-06 19:01:57
@Joe:現在我應該使用集合不是線程安全的,如'Queue','Dictionary',等.. – enzom83 2012-02-06 20:20:10
任何特別的原因?你只是最有可能重新實現輪子。 – Joe 2012-02-06 20:31:20