
Летучая
18.03.2017
19:06:27

Arseniy
18.03.2017
19:06:42
.Rusult - блокирущая
await и ContinueWith - нет

ACx0
18.03.2017
19:06:48
И самый большой вопрос: зачем?
нельзя просто сделать всё в одном месте, а потом перейти в другое?

Ilya
18.03.2017
19:06:50
теперь, так как у нас никаких SynchronizationContext нет, по прошествии 1000 милисекунд Task.Delay завершается

Google

Ilya
18.03.2017
19:07:08
что зачем?
ну и метод завершается

Axm
18.03.2017
19:09:10
А в чём предмет срача? Пропустил начало, не могу сориентироваться.

Ilya
18.03.2017
19:09:33
рассказываем как работает async/await

Летучая
18.03.2017
19:09:38

Axm
18.03.2017
19:09:48
Откуда началось?

Ilya
18.03.2017
19:09:53

Axm
18.03.2017
19:10:01
Сделайте плес реплай

ACx0
18.03.2017
19:12:37
А почему управление прыгает? Почему не выполнить по порядку? Или же это и есть синхронность?

Ilya
18.03.2017
19:14:33
вот так нагляднее

Google

ACx0
18.03.2017
19:16:03
Применение поймать не могу.
Я могу понять запуск таска без .Result/await, который будет заполнять очередь (и ничего не возвращать) и запуск за ним разборщика очереди, который уже будет что-то возвращать.
Тут две задачи (первая из которых может содержать в себе ещё несколько) параллельно запускаются и вторую мы await, а первую нет.
Вообще считал всегда, что async методы для того, чтобы запустить их, они в фоне болтались, а в это время дальше работать, не ожидая его. А если ждать надо, то await.

Ilya
18.03.2017
19:16:05

ACx0
18.03.2017
19:16:52

Ilya
18.03.2017
19:17:08
Применение поймать не могу.
Я могу понять запуск таска без .Result/await, который будет заполнять очередь (и ничего не возвращать) и запуск за ним разборщика очереди, который уже будет что-то возвращать.
Тут две задачи (первая из которых может содержать в себе ещё несколько) параллельно запускаются и вторую мы await, а первую нет.
Вообще считал всегда, что async методы для того, чтобы запустить их, они в фоне болтались, а в это время дальше работать, не ожидая его. А если ждать надо, то await.
есть асинхронность и многопточность, это как тёплое и мягкое
потому что тебе нужен синхронный код
синхронный многопоточный код

ACx0
18.03.2017
19:20:58

Axm
18.03.2017
19:21:09
Вообще-то Parallel.For не гарантирует выполнение в разных потоках.

Ilya
18.03.2017
19:22:01

ACx0
18.03.2017
19:22:26

Ilya
18.03.2017
19:22:35

ACx0
18.03.2017
19:22:45
Так я и полез в это всё.

Ilya
18.03.2017
19:23:08
UWP что ли? или Core?

ACx0
18.03.2017
19:23:24
Core

Ilya
18.03.2017
19:24:29
а какой тебе метод нужен от HttpClient?

Axm
18.03.2017
19:24:37

ACx0
18.03.2017
19:24:51

Axm
18.03.2017
19:25:23
У нас там выше было на эту тему, ща поищу

Google

ACx0
18.03.2017
19:25:41

Axm
18.03.2017
19:26:34
Отсюда и ниже

ACx0
18.03.2017
19:26:42
Всё уже давно написано и работает, но, раз уж эти async есть, наверное, всё равно рано или поздно придётся их использовать, вот и пытаюсь понять.
var Response = Task.Run(async () => await HTTPClient.SendAsync(req).ConfigureAwait(false)).Result;

Ilya
18.03.2017
19:29:29
смотри, небольшое демо
var tasks = new List<Task?);
for(int i =1;i<10;i++)
{
tasks.Add(Task.Delay(1000));
}
Task.WhenAll(tasks).Wait();
вместо Prallel.For ты можешь просто насоздавать кучу тасков и потом дождаться из выполнения
этот код выполнится за 1 секунду
потому что таски будут выполняться параллельно
насколько я понимаю, ты хочешь выкачать какой то сайт или данные и хочешь это делать в много потоков

ACx0
18.03.2017
19:33:35

ACx0
18.03.2017
19:35:07

Axm
18.03.2017
19:35:08
этот код выполнится за 1 секунду
Я может говорю хуйню, но разве в твоем коде таски не начинают выполняться по мере добавления в список задач? То есть при большем числе прохода цикла for к моменту вызова WhenAll часть из них уже будет завершена.

ACx0
18.03.2017
19:35:38

Ilya
18.03.2017
19:36:09

Axm
18.03.2017
19:36:39

Ilya
18.03.2017
19:37:15
хммм... возможно)

Axm
18.03.2017
19:37:16
Если задач будет много, не все они будут выполняться сразу и параллельно

ACx0
18.03.2017
19:37:44
У меня вопрос в общем о том, как работают async-методы и что с ними делать.
Ну и что за муть с прыгающим управлением.

Google

Ilya
18.03.2017
19:38:05

ACx0
18.03.2017
19:40:24

Ilya
18.03.2017
19:40:51

ACx0
18.03.2017
19:41:15
Ааа, что?

Ilya
18.03.2017
19:41:21
причём тут ядра?
ну вот ты его запутал(((

ACx0
18.03.2017
19:41:39
Ну а на чём их 10 одновременно запустить?

Ilya
18.03.2017
19:42:10
да там не создаётся вообще потоков!

Admin
ERROR: S client not available

Ilya
18.03.2017
19:42:21
эта штука работает на таймере системном

ACx0
18.03.2017
19:42:55
P.F. Мне пакетами(примерно) как раз и выдавал результат.
Особенно первый, ровно по количеству ядер.

Ilya
18.03.2017
19:43:37
Paraller For работает на потоках а мой второй пример их не создаёт

Axm
18.03.2017
19:43:38

ACx0
18.03.2017
19:43:52

Ilya
18.03.2017
19:43:53

ACx0
18.03.2017
19:44:29

Ilya
18.03.2017
19:44:39
Thread
этот такая единица операционной системы

Google

ACx0
18.03.2017
19:45:38

Сергей
18.03.2017
19:46:30
Асинхронность != многопоточность

Ilya
18.03.2017
19:46:30
операционная система планирует выполнение потоков и преостанавливает их, чтобы дать выполниться другим

ACx0
18.03.2017
19:46:49

Ilya
18.03.2017
19:47:20

Axm
18.03.2017
19:47:32
А не многопоточность ли это?
Многопоточность это когда у тебя (генерала) два или более рта и ты можешь говорить что делать сразу двум или более адъютантам
О, еще пример. Представь очередь в кассу в столовой. Все едут с подносами к оплате. Когда кассы две - это многопоточность. Когда кассир говорит тебе "три рубля завтра принесешь" вместо того, чтобы ждать когда ты их сейчас принесешь и тормозить всю очередь - это асинхронность.

ACx0
18.03.2017
19:50:03
Если он не создаёт потоков, то как таски параллельно выполняются?

Ilya
18.03.2017
19:50:49
они выполнябтся асинхронно
а не многопоточно

ACx0
18.03.2017
19:51:23

Ilya
18.03.2017
19:51:30
последний столбец - количество потоков в одном процессе

Сергей
18.03.2017
19:52:34

ACx0
18.03.2017
19:52:36

Ilya
18.03.2017
19:53:05
системый таймер переключит их через определенное время

Азимов
18.03.2017
19:54:13
Женич
Жения

ACx0
18.03.2017
19:54:24
Эта группа больше не существует