我正在C#中編寫一個TCP服務器,並且我正在使用BeginXXX和EndXXX方法進行異步通信。如果我理解正確,當我使用BeginXXX時,請求將在線程池中處理(當請求準備就緒時),同時主線程繼續接受新連接。BeginXXX和線程池
問題是如果我在其中一個AsyncCallbacks中執行阻止操作會發生什麼?作爲任務運行阻塞操作會更好嗎?任務也使用線程池,不是嗎?
用例是:
主線程設置窗口偵聽套接字,其接受使用BeginAccept連接,並開始監聽使用BeginReceive這些連接。當收到完整的消息時,根據消息的內容調用函數,在所有情況的80%中,這些函數將啓動數據庫查詢/插入/更新。
開始哼確定。在這種情況下,阻止操作將是一個數據庫查詢,但我想這在大多數情況下會低於500ms :) –
爲什麼不異步查詢數據庫? – fsimonazzi
不會異步查詢也使用線程池? –