@Sing303

Как работает TaskCompletionSource в C#?

Подскажите, как именно устроена работа TaskCompletionSource в C#.
Интересуют следующие вопросы:
1. При использовании TaskCompletionSource создаётся новый поток (Task)?
2. Если не создаётся, то в каком потоке он ожидает установки SetResult?
3. Есть ли отличие от ManualResetEvent (помимо возврата Task), который блокирует поток, пока не дождётся?
4. Будет ли выгода от замены ManualResetEvent на TaskCompletionSource, если event ждёт сообщения из вне по сокету?
  • Вопрос задан
  • 3529 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Описание работы: andrey.moveax.ru/post/csharp-sync-to-async
И из него:
1. Новый поток создается вами при необходимости. TaskCompletionSource создает только инстанс типа Task
2. Ожидает в том который запросил результат.
3. ManualResetEvent работает с обьектом ядра "event", и этот обьект не блокирует поток.
4. "event" вы всегда можете проверить на состояние и если оно не сигнальное, но продолжить нужные дела.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы