Tôi phải gửi 10000 tin nhắn. Tại thời điểm này, nó xảy ra đồng bộ và mất đến 20 phút để gửi tất cả.Gửi 5000 tin nhắn theo cách không đồng bộ trong C#
// sending messages in a sync way
foreach (var message in messages)
{
var result = Send(message);
_logger.Info($"Successfully sent {message.Title}.")
}
Để rút ngắn thời gian gửi tin nhắn, tôi muốn sử dụng không đồng bộ và chờ đợi, nhưng lo ngại của tôi là thời gian chạy C# có thể xử lý 15000 nhiệm vụ trong quy trình công nhân.
var tasks = new List<Task>();
foreach (var message in messages)
{
tasks.Add(Task.Run(() => Send(message))
}
var t = Task.WhenAll(tasks);
t.Wait();
...
Ngoài ra, về mặt trí nhớ, tôi không chắc chắn nếu đó là một ý tưởng tốt để tạo ra một danh sách 15000 nhiệm vụ
TPL sử dụng một nhóm luồng và sẽ không sinh ra một luồng mới cho mỗi 'Task.Run()'. – Loris156
Chỉ cần chạy điều này và xem nó như thế nào – Evk
Nó sẽ chỉ rút ngắn thời gian nếu phương thức gửi có thể hoạt động song song. –