Задать вопрос
@Sing303

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

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

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

Похожие вопросы