我已經構建了一個應用程序,通過Amazon SES爲網站發送電子郵件郵件。它用C#編碼。多線程加速電子郵件發送應用程序
每封電子郵件需要0.3秒才能通過Amazon SES API發送。這意味着,使用單線程應用程序,我只能每秒發送3封電子郵件。
我實現了一個生產者/消費者,多線程應用程序與1個生產者查詢定製電子郵件爲每一個客戶,和25消費者從隊列中提取併發送電子郵件。
我的多線程應用程序每秒發送12個電子郵件(四倍速度增加)。我預計25線程應用會提高速度。
我的問題是: 多少錢我可以真的加快發送郵件在單處理器機器?我的收益看起來是否合理,還是我的速度問題更可能是由於編碼而非計算機無法快速處理電子郵件?
在此先感謝!
UPDATE:如果其他人遇到同樣的問題....連接到AWS以發送電子郵件需要很長時間。 AWS Developer論壇上的以下主題提供了一些見解(您可能需要向下滾動才能看到更有用的帖子)。
https://forums.aws.amazon.com/thread.jspa?threadID=78737
從我對多線程的理解來看,它可以處理多個任務,但仍然需要相同的時間。所以我不認爲使用多線程會節省大量時間。但是,如果在電子郵件發送時UI仍然需要可訪問,則可以使用多線程。 – craig1231 2012-01-01 23:13:57
您的系統中有多少個核心? – Tudor 2012-01-01 23:14:23
在典型的郵件過程中,隊列計數會發生什麼情況?查看生產者線程是否超出電子郵件發件人或不是。也許每隔一秒將P-C隊列計數轉儲到計時器的屏幕上。 – 2012-01-02 02:36:48