相关疑难解决方法(0)

执行I / O操作的ThreadPool线程-等待时可以重用线程吗?

我已经阅读了一些有关异步/等待vs线程池vs线程的知识,我不得不承认,我不清楚细节。我我有一个具体的问题的答案,但是我不能肯定地说。

我也知道关于SO和其他地方的许多问题,这些问题正在讨论和解释中。我在SO上读到了不少文章,但没有找到明确的答案,或者至少没有我想要的清晰。

我收集了什么:

  • 在I / O操作中使用async / await,将使该线程可用于其他用途,而I / O操作将在其他地方继续进行
  • 对于服务器应用程序,这意味着更高的吞吐量等

但是,一位同事说了这样的话:

  • 使用ThreadPool执行相同的I / O操作的行为与async / await几乎相同
  • 当ThreadPool线程将I / O操作“移交给”操作系统时,它可能会等待答案,但这无关紧要,因为在CPU上没有任何工作(线程正在等待),因此,ThreadPool / OS /框架可以使用或生成另一个线程来执行其他一些工作。
  • 由于线程池最多只能有32000个线程,因此没关系,因为它可以使用更多线程。线程的开销很小,只有几个字节的内存

所以,我要问的是:

  • 来自ThreadPool的线程是否在I / O操作中阻塞?
  • 是否有关系,因为OS / framework / Threadpool可以在需要其他工作时仅使用池中的另一个线程?
  • 底线:使用async / await或ThreadPool的I / O操作;对效率和生产量有影响吗?

请注意,我不是从服务器的角度讨论客户端的事情。

预先抱歉,如果我错过了确切的答案,我已经看过=)

.net c# multithreading threadpool async-await

2
推荐指数
1
解决办法
111
查看次数

标签 统计

.net ×1

async-await ×1

c# ×1

multithreading ×1

threadpool ×1