首页 > 解决方案 > 如果没有线程回调异步函数怎么办

问题描述

我认为,当我们发出异步请求时,线程池中的一个线程将被分配给该请求,并且当该请求作为 sql 查询进入数据库时​​,直到查询完成,分配给该请求的线程将被释放,然后另一个请求可以使用该线程。

所以我的问题是让我们考虑一下所有线程都已分配给请求并且线程池中没有线程的情况。然后想象一下触发了一个 sql 查询的回调,以及由于线程池中没有空闲线程,CPU 如何处理这个回调。

标签: c#.netmultithreadingasynchronousthreadpool

解决方案


通常,处理器管理线程的堆栈,但如果您开始在编程级别不受任何控制地抛出线程,它可能会阻塞开发人员,实际上是应用程序,最大线程数由可用的物理资源量决定。

ThreadPool.GetAvailalbeThreads 返回池中当前可用的线程数。它是最大线程数减去当前活动线程数。

ThreadPool.GetAvailableThreads(out workers, out ports); 

推荐阅读