170 похожих чатов

А вот кто знает, зачем это нужно делать по сути

синхронный метод, который скажем обращается к БД для проверки коннекшна формально асинхронным таким способом?

async Task<T> CheckConnection(...)
{
await Task.Delay(1);
}

34 ответов

24 просмотра

Если проверка коннекшона может занимать до минуты, то почему бы не сделать её асинхронной? Таск дилэй вангую для того, чтоб канпелятор не оптимизировал и не сделал синхронным

Igor
Что?

Ты чет фигню сказал

Igor
Где именно?

https://t.me/DotNetRuChat/1523962

> формально асинхронным это не сделает запрос в базу асинхронным для чего здесь await Task.Delay(1)? асинхронные методы выполняются синхронно до первого await и если я правильно понял, там после этого идет синхронный запрос в базу поэтому чтобы сразу вернуть управление вызывающему потоку, и соффлоадить континуэйшн на тред из тред пула то бишь чтобы вызывающий поток не ждал синхронного похода в базу но Task.Delay(1) это хуйня, для этого есть Task.Yield()

Сергей
> формально асинхронным это не сделает запрос в б...

Так в любом случае хуйня, можно просто ебануть Task.Run

Сергей
> формально асинхронным это не сделает запрос в б...

Там может быть что угодно, лишь бы канпелятор не убрал await

Phantom
Так в любом случае хуйня, можно просто ебануть Tas...

можно, но это еще дополнительные накладные создаст

Phantom
Вот опять ты несешь фигную

Когда знает что авэйтить нечего будет

Phantom
Сделав тоже самое, что и await Task.Yield?

ну померяй с await Task.Yield() и с await Task.Run() чет мне кажется что разница будет

Phantom
А мне лень!

фантома еще никто не передушнил

Igor
Когда знает что авэйтить нечего будет

Ну напиши код, выведи номер потока, до и после, скомпилируй и как дебаг и как релиз, и позапускай. Потом расскажешь как компилятор оптимизирует await

Сергей
а пример есть?

Читаем варнинг

Оно await не убирает

Верно, его там и нет. Убирает асинк. А если есть авэйт, то не убирает

Igor
Верно, его там и нет. Убирает асинк. А если есть а...

где убирает? можно пример кода а не ворнинга

Сергей
где убирает? можно пример кода а не ворнинга

Ну в IL убирает, где ж ещё. Не делается стэйтмашин

Сергей
пример на https://sharplab.io/ пж

Проверь сам, пжл. Я с телефона. Где то помню читал

Igor
Проверь сам, пжл. Я с телефона. Где то помню читал

ну вот я чекнул, не убирается стейт машина

Сергей
ну вот я чекнул, не убирается стейт машина

Именно для этого метода? Может у тебя она там для вызывающего?

Это потому что таск наверное. С войдовым может будет как я говорю. Но правда у автора вопроса тоже таск, так что возможно там реально await Task.Delay ни на что не повлияет

Igor
Это потому что таск наверное. С войдовым может буд...

не будет так никогда а все потому что если компилятор вырежет асинк, то твой метод никто не сможет эвейтить а откуда компилятору знать эвэйтит ли кто-то твой метод? а если это публичный метод с либы?

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта