Pull to refresh
2
0
Send message

Про Task.Start хотя да он есть, но не удобный в сравнении с Task.Run

Видел несколько раз как упускают этот момент при создании таски и советы как решить это обходным путем. Одно из последних - эта статья.
Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C# / Хабр (habr.com)

Я только учусь писать статьи и решил выложить эту мелочь, но готовиться еще одна - побольше про clikhouse и net channel

Да там статейка на один гист также, но висит в модерации
Deadlock and Task.WhenAll. Don't forget to use Task.Run or Task.Factory.StartNew (github.com)

Тут просто пара тест-кейсов, а не полное объяснение почему это происходит (про машины состояний на хабре полно статей)

касательно не правильного тестирования второго кейса написал тут
Как легко получить deadlock на Task.WhenAll / Песочница / Хабр (habr.com)


а как пофиксить и результаты у вас в gist (ниже вырезка)
https://gist.github.com/Stepami/17ceafbfdd91259a9821fd808e3eb08f?permalink_comment_id=4885757#gistcomment-4885757

| Method                  | CollectionCount | CpuWorkIterations |  Mean, us  |  Error, us |  StdDev, us  |
|-------------------------|----------------:|------------------:|-----------:|-----------:|-------------:|
| TaskWhenAllFixOptPrefer | 100             | 1000000           | 61679,49   | 24578,22   | 1347,22      |
| ParallelForEach         | 100             | 1000000           | 74319,36   | 45998,11   | 2521,31      |

Information

Rating
Does not participate
Registered
Activity