我们有一个 WCF 服务(部署在 IIS 上),它对数据库进行昂贵的调用。它不使用任何类型的异步编程 (async\await)。
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
using (SqlCommand command = new SqlCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "StoreProcedure_NAME"; //Takes 6 seconds
command.Connection = connection;
adapter.SelectCommand = command;
adapter.Fill(dataset);
return dataset;
}
}
现在,在 6 秒的等待时间内调用数据库的线程(我相信这是一个 wcf 线程池线程)会发生什么情况。此线程是否阻塞并占用 CPU 周期或线程是否处于等待状态(等待中断)?
最佳答案
是的,它被阻止了。 async
方法旨在将线程返回到监听池,并在任务完成时从线程池中检索新的(或相同的)线程。非 async
方法将阻塞您的调用线程。
关于c# - 做数据库操作时线程是否阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386428/