Использование потоков ThreadPool в библиотеке - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю над основной библиотекой .net, которая будет использоваться в основном в веб-приложениях.Эта библиотека строится с учетом производительности, так как это главное решение при проектировании.Есть некоторый код, который довольно тяжелый и поэтому будет кэшироваться, чтобы последующие вызовы были быстрыми.Как вы можете себе представить, первый звонок медленнее, и я не хочу этого.Я хочу выполнить этот код в кратчайшие сроки, чтобы прогреть кеш, не затрагивая другие операции.Я думал об использовании Task.Start() без await, чтобы достичь этого.

Мой вопрос заключается в том, не одобряется ли использование потоков потоков в библиотеке, т. Е. Каков этикет на этот счет?Поскольку это будет в основном использоваться в веб-приложениях, я чувствую, что не хочу вмешиваться в пул потоков клиента.При этом библиотека будет использовать только один фоновый поток, и это будет меньше, чем второй.Или я должен просто позволить клиенту снизить производительность при первых вызовах?

1 Ответ

0 голосов
/ 22 ноября 2018

Если я вас правильно понимаю;вполне законно использовать многопоточность в библиотеке;на самом деле: это происходит постоянно.

В основном, многие async Task методы делают это так или иначе.( Иногда нет потока )

Если он настолько тяжелый, что вам нужно несколько параллельных потоков в течение длительного периода времени, то лучше создать явную процедуру инициализации и предупредить вызывающего вдокументы.

Task.Run обычно используется для такой обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...