Пользователь
Про 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 |
Про 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