gpt4 book ai didi

c# - Task.Run() 会对性能产生影响吗?

转载 作者:行者123 更新时间:2023-12-05 01:48:08 31 4
gpt4 key购买 nike

我有一个调用数据库的方法,如下所示:

BL方法调用DAO方法:

    public async Task<List<Classes>> GetClassesAndAddRules(string classId)
{
var classData = await Task.Run( () => _daoClass.GetClasses(classId));

//logic for adding rule
//..................................
}

DAO 中的数据库调用:

   //*below method takes 1 second approx to return*
public List<Classes> GetClasses(string id)
{
var retVal = new List<Classes>();

using (var context = new test_db_context())
{
var rows = context.GetClassesById(id);
foreach (ClassesDBComplexType row in rows)
{
retVal.Add(Mapper.Map<GetClassesByClassIdOut>(row));
}
}
return retVal;
}

我使用 await 调用 DAO 方法是否有任何性能提升?

我的理解是 GetClasses() 将在单独的线程上调用,这样它就不会阻塞并继续处理其他内容。

感谢任何帮助。

最佳答案

您发布的代码无法编译。根据您的问题标题,我假设您的调用实际上看起来像 await Task.Run(() => _daoClass.GetClasses(classId));

在那种情况下,使用 Task.Run 在性能上产生差异:它会更糟。

服务器端async 的意义在于释放请求线程 而不是阻塞。您使用 await Task.Run(...) 所做的是释放请求线程通过在另一个线程上开始工作。换句话说,Task.Run 代码有相同数量的工作要做加上线程编码(marshal)处理。

关于c# - Task.Run() 会对性能产生影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038776/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com