Size: a a a

var chat = new Chat();

2020 May 01

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
так получается так что мы с await'ом наоборот ждем ответа...
ждём, НО мы не тратим лишних ресурсов на ожидание этого ответа!
источник

н

назови меня клоуном... in var chat = new Chat();
и что бы это могло значить
источник

н

назови меня клоуном... in var chat = new Chat();
лишние ресурсы
источник

н

назови меня клоуном... in var chat = new Chat();
например?
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
основной поток не выполняется пока await не выполнится, разве нет?
продолжение таски может выполнить любой поток из пула
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
лишние ресурсы
целый поток
источник

YN

Yurii Nskyi in var chat = new Chat();
здесь мне нравится пример из Рихтера, где он обьяснял про потоки
то что выделять целый поток под одну задачу это абсолютно нерациональное расходование ресурсов
источник

YN

Yurii Nskyi in var chat = new Chat();
он большую часть будет простаивать!
источник

н

назови меня клоуном... in var chat = new Chat();
Yurii Nskyi
целый поток
так а всмысле, разве мы не вызываем поток когда await используем?
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
так а всмысле, разве мы не вызываем поток когда await используем?
ну тут надо детально погружаться как работают планировщики потоков, но в общем нет, потоки в основном берутся из пула
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
так а всмысле, разве мы не вызываем поток когда await используем?
вызов await берёт поток только для определённых задач. работа с сетью как описал Юрий выше, грубо говоря просто заканчивает выполнение твоего метода, сохраняя текущую позицию в методе. и потом управление вернётся на эту позицию, когда готов результат
источник

н

назови меня клоуном... in var chat = new Chat();
я просто раньше думал что синхронно - последовательно, асинхронно - параллельно, но вот теперь вообще не могу понять разницу
источник

н

назови меня клоуном... in var chat = new Chat();
Vova Lantsov
вызов await берёт поток только для определённых задач. работа с сетью как описал Юрий выше, грубо говоря просто заканчивает выполнение твоего метода, сохраняя текущую позицию в методе. и потом управление вернётся на эту позицию, когда готов результат
тоесть и синхронный и асинхронный код выполняется последовательно или как?
источник

YN

Yurii Nskyi in var chat = new Chat();
назови меня клоуном
я просто раньше думал что синхронно - последовательно, асинхронно - параллельно, но вот теперь вообще не могу понять разницу
забудь про параллельность
источник

YN

Yurii Nskyi in var chat = new Chat();
асинхронный код - просто способ переложить лишнюю работу по ожиданию ответа на плечи внешнего по отношению к твоему коду
источник

VL

Vova Lantsov in var chat = new Chat();
назови меня клоуном
я просто раньше думал что синхронно - последовательно, асинхронно - параллельно, но вот теперь вообще не могу понять разницу
асинхронность тоже последовательная при классическом использовании, она просто позволяет освободить поток когда он не нужен
источник

MC

M@s0n C01em@n in var chat = new Chat();
на обычных смертных это не распространяется?
а то вижу что надо регестрироваться с помощью корпоративной почты
источник

н

назови меня клоуном... in var chat = new Chat();
не очень тогда понимаю почему не сделать такую штуку типа делаем запрос к бд  в фоновом потоке и параллельно продолжаем основной пока не дойдем до момента пока нам не нужен будет респонс от бд(ну и потом если ответ все еще не получен можно подождать)
источник

н

назови меня клоуном... in var chat = new Chat();
это же логично очень...
источник

VL

Vova Lantsov in var chat = new Chat();
Если не использовать await на методах, которые возвращают Task, задача запускается, но не ожидается, тут уже про параллельность можно говорить

Task t1 = DoSomethingAsync(); // без await
Task t2 = DoSomething2Async(); // без await
await Task.WhenAll(t1, t2);
источник