我正在开发.net核心库,该库将主要在Web应用程序中使用。构建此库时要考虑性能,因为这是主要的设计决策。有一些代码很繁琐,因此,这些代码将被缓存,以便快速进行后续调用。可以想象,第一个通话速度较慢,我不希望这样。我想尽早执行此代码以预热缓存,而不影响其他操作。我当时在考虑使用Task.Start()
而不使用await
来实现这一目标。
我的问题是,在库中使用线程池线程是否令人厌烦,即对此的礼节是什么?因为这将主要用于Web应用程序,所以我不想干扰客户端的线程池。话虽这么说,该库将只使用一个后台线程,并且将少于一秒钟。还是我应该让客户对初次致电产生影响?
答案 0 :(得分:1)
如果我对您的理解正确;在库中使用多线程是完全合法的;事实上:它一直在发生。
基本上,许多async Task
方法以一种或另一种方式进行此操作。 (Sometimes there is no thread)
如果它是如此繁重,那么您需要很长一段时间才能使用多个并行线程,那么最好创建一个显式的初始化例程,并在文档中警告调用者。
Task.Run通常用于这种处理。