簡體   English   中英

SmtpClient.SendAsync降低還是提高性能?

[英]SmtpClient.SendAsync decrease or increase performance?

如果我有2個SmtpClient對象,並且同時在兩個對象上調用SendAsync()方法,那么這2個發送請求是在一個線程中順序處理還是在多個線程中同時處理? SendAsync()方法的實現是什么?

如果在Web服務器線程池中的新線程中處理了每個SendAsync()方法調用,則可能導致Web服務器線程池中的可用線程減少,從而降低了整體性能(如果達到了線程池最大限制)。

我已經搜索了MSDN文檔,但是沒有找到有關如何處理異步方法的說明。

對於任何一個SmtpClient對象,一次只能發送一條消息... MSDN文檔說:

“在調用SendAsync之后,您必須等待電子郵件傳輸完成,然后再嘗試使用Send或SendAsync發送另一封電子郵件。”

在幕后,調用很可能保持異步,依靠來自較低層的回調(即Winsock,用於異步模式)來推動繼續處理。 我希望一個線程能夠處理多個異步發送調用,而不必等待較早的發送完成。 出於吞吐量和資源使用的原因,以同步方式處理客戶端發出的異步調用或在通信堆棧中進一步處理每次調用線程是沒有意義的。

對於僅2個調用,很有可能它們將由一個線程“偽並發”處理(每個處理程序都有一個處理程序,輪流處理來自WinSock的異步通知)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM