генератор тредов, он их запускает один за одним. Треды при этом выполняются по одному, то есть они встают в очередь и там ждут. При этом генератор может запускать треды, быстрее чем они успевают выполнятся. Как гарантировать что тредпул не переполнится? Очевидно что какие-то треды придется выбрасывать.
На этот вопрос ответ будет по прежнему async-await?
В генераторе проверять есть ли свободное место для нового треда и тормозить его если что
да while(true) var action = await GetNextActionFromProducer(); await action(); } Один за другим. В пуле одновременно запускается только одна задача
http://reactivex.io/ ещё можешь вот это посмотреть. Но лучше расскажи подробнее о своей задаче что и как в ней происходит и зачем
Делаешь очередь из тасок и разгребаешь ее запуская таски как тебе нужно, ждёшь выполнения запускаешь следующую... Делов то? И тредпулл насиловать не надо.
Обсуждают сегодня