6
10000 개의 메시지를 보내야합니다. 현재 동기식으로 발생하며 모든 것을 전송하는 데 최대 20 분이 소요됩니다. C#에서 비동기 방식으로 5000 개의 메시지 전송
// sending messages in a sync way
foreach (var message in messages)
{
var result = Send(message);
_logger.Info($"Successfully sent {message.Title}.")
}
내가 비동기를 사용하고 기다리고 싶은 메시지 전송 시간을 단축하기 위해,하지만 C#을 런타임이 작업자 프로세스에서 작업의 15000 수를 처리 할 수 있는지 나의 관심사입니다.
var tasks = new List<Task>();
foreach (var message in messages)
{
tasks.Add(Task.Run(() => Send(message))
}
var t = Task.WhenAll(tasks);
t.Wait();
...
또한, 메모리의 측면에서, 내가 직장에서 집으로 온 이후로는 15000 작업
TPL은 스레드 풀을 사용하며 모든 Task.Run()에 대해 새 스레드를 생성하지 않습니다. – Loris156
그냥 실행하고 어떻게되는지 확인 – Evk
send 메소드가 병렬로 작동 할 수있는 경우 시간이 단축됩니다. –