当前位置: 首页 > 知识库问答 >
问题:

您可以使用task.run将CPU绑定的工作移到后台线程[重复]

彭朝
2023-03-14

从msdn中,

您可以使用task.run将CPU绑定的工作移到后台线程。

我的问题是,还有其他选择吗?如果我想使用await关键字,我必须返回Task,因此我必须使用Task.run

public static Task<int> LongProcess()
{
    return Task.Run<int>(() =>
    {
        //Long running 
        return 5;
    });
}

public async static void CallProcess()
{
    int a = await LongProcess();
}

上面的代码不是唯一可以使用的选项吗?如果没有,你能展示其他选择吗?如果我不使用task.run,为什么我需要异步/await?

共有1个答案

江光明
2023-03-14

这不仅仅是CPU密集型工作。更通常的情况是,您将使用Async/Await进行I/O工作,否则这些工作将在等待文件系统、数据库或网络操作完成时锁定线程。

 类似资料:
  • 问题内容: 运行XCT UI测试时,可以使用以下命令将应用程序置于后台进行测试: 是否可以通过某种方式使应用程序回到前台(活动状态)而无需重新启动应用程序? 问题答案: Xcode 9更新 :从 Xcode 9 开始,您现在可以简单地调用任何XCUIApplication。 https://developer.apple.com/documentation/xctest/xcuiapplicati

  • 问题内容: 当我运行多线程代码时,系统(linux)有时会将线程从一个处理器移动到另一个处理器。由于我拥有与处理器一样多的线程,因此它没有充分的理由使缓存无效,并且使我的跟踪活动混乱。 您知道如何将线程绑定到处理器,为什么系统会这样做? 问题答案: 使用(这是特定于Linux的)。 为什么调度程序会在不同处理器之间切换线程?好吧,假设您的线程最后一次在处理器1上运行,并且当前正在等待再次安排执行时

  • null 所以你可以不受任何限制地做背景工作。尽管由于这些原因您应该使用服务,但链接。 这是做背景工作的另一种方式(当然不是更好,但仍然是一种方式)吗?我错了吗?

  • 问题内容: 我在Qt工作,当我按下GO按钮时,我需要不断将软件包发送到网络并使用收到的信息修改界面。 问题是我在按钮中有一个,所以按钮永不结束,所以界面永不更新。我想在按钮中创建一个线程并将代码放在那里。 我的问题是如何从线程修改接口?(例如,如何从线程修改textBox? 问题答案: 关于Qt的重要一点是, 必须 仅从GUI线程(即主线程)使用Qt GUI。 这就是为什么执行此操作的正确方法是从

  • 问题内容: 我正在使用KnockoutJS并具有主视图和视图模型。我想要一个对话框(jQuery UI一个)弹出,而另一个视图绑定到一个单独的子视图模型。 对话框内容的HTML使用AJAX检索,因此我希望能够在请求完成后调用,并且我希望将子视图模型绑定到对话框div中通过Ajax加载的HTML的一部分。 这实际上可行吗?还是在页面最初加载后调用一次时需要加载所有视图和视图模型? 问题答案: 接受第

  • 在Hadoop中保存数据并使用Spark/Hive等使用数据是否可靠? 使用HDFS作为主存储的优势是什么?