task-parallel-library 相关问题

自.NET 4以来,任务并行库是.NET Framework的一部分。它是一组API,使开发人员能够对异步应用程序进行编程。

Task.WhenAll 与 Parallel.ForEachAsync - 哪种方法最好,为什么?

我正在尝试了解.NET 中的线程和任务并行库。因此,我正在尝试使用两种方法同时运行任务,如下所示 - 一些背景—— ...

回答 2 投票 0

任务并行库 - 哪种方法最好,为什么?

我正在尝试了解.NET 中的线程和任务并行库。因此,我正在尝试使用两种方法同时运行任务,如下所示 - 一些背景—— ...

回答 1 投票 0

Oracle 客户端与基于任务的异步模式(异步/等待)

我想编写一堆以异步/等待方式查询Oracle数据库的方法。由于 ODP.NET 似乎既不支持可等待的 *Async 方法,也不支持 Begin/EndOperationName 对,什么选项...

回答 4 投票 0

Parallel.ForEachAsync 保持排序顺序

我尝试使用 Parallel.ForEachAsync 执行文件上传,它可以工作,但会丢失排序顺序。有没有任何方法可以同步排序顺序或源列表和目标列表? 等待并行。

回答 2 投票 0

使用TPL时如何管理线程本地存储(TLS)?

我想在 TLS 中存储日志记录上下文信息,以便我可以在入口点设置一个值,并使该值在所有结果堆栈中可用。这很好用,但我也使用 TPL 和

回答 3 投票 0

向winform添加控件,同时允许用户输入内容

我有一个 WinForms 数据输入表单,其中包含超过 1500 个问题。我将问题分成几个部分,每个部分都有未知数量的问题。每个部分都是...

回答 1 投票 0

如何在数据流块中为每个线程创建对象而不是为每个请求创建对象?

我有一个代码示例 var options = new ExecutionDataflowBlockOptions(); var actionBlock = new ActionBlock(异步请求=>{ var rand = new Ranodm(); //做一些事情...

回答 1 投票 0

TPL 数据并行问题

我有一个情况是并行处理这组数据,最后我想知道总共有多少数据已经处理成功。我按照以下方式提供了以下虚拟代码...

回答 1 投票 0

带有多个任务和 UI 同步的 WinForms TPL 模式 - 这是正确的吗?

我是 TPL(任务并行库)的新手,想知道以下是否是启动 1 个或多个任务、整理结果并将其显示在数据网格中的最有效方法。 搜索1 &

回答 2 投票 0

为什么await Task.WhenAll()可以提高性能?

我试图理解这两段代码之间的区别: 私有异步任务 LoadShopData() { // 这些执行 MongoDB 查询 任务 我试图理解这两段代码之间的区别: private async Task<ShopData> LoadShopData() { // These perform MongoDB queries Task<IEnumerable<ShopMerchant>> fetchMerchants = _ShopSource.GetMerchants(); Task<IEnumerable<ShopMerchant>> fetchTiers = _ShopSource.GetTiers(); var shopData = new ShopData { ShopMerchants = (await fetchMerchants).ToList(), ShopTiers = (await fetchTiers).ToList() }; return shopData; } // Second option: private async Task<ShopData> LoadShopData() { // These perform MongoDB queries Task<IEnumerable<ShopMerchant>> fetchMerchants = _shopSource.GetMerchants(); Task<IEnumerable<ShopMerchant>> fetchTiers = _shopSource.GetTiers(); var tasks = new List<Task> { fetchMerchants, fetchTiers }; await Task.WhenAll(tasks); var shopData = new ShopData { ShopMerchants = (fetchMerchants.Result).ToList(), ShopTiers = (fetchTiers.Result).ToList() }; return shopData; } 我认为第二种方法会更好,但是在任何一种情况下,主线程都不会被阻塞,因为即使在第一种方法中,当线程遇到 await 关键字时,线程也可以自由地继续执行调用堆栈上方的任何工作. 第二种方法的性能是否只是因为 main 方法只需要返回一次而不是两次来继续在 LoadShopData() 中工作? 当您await在代码中的任何位置时,它会逻辑上阻塞,并且不允许执行下一行代码,直到Task返回值。如果您执行一个 await 而不是两个,您会自动使算法运行得更快,因为它等待的时间更少。只需计算代码中等待的原始数量即可找出哪个执行速度更快。

回答 1 投票 0

与异步方法的并行性:为什么我需要在这里执行 Task.Run() ,我可以避免它吗?

我的目标是提高对 C# 并发性的理解,并遇到了一个关于我的小玩具问题的问题。 让我们考虑一个异步方法 async Task CountAsync(int id) ...

回答 1 投票 0

任务与线程池

我有一个 C# 应用程序,其中包含要做的工作列表。我希望尽可能多地并行完成这些工作。但是我需要能够控制并行任务的最大数量。 来自

回答 4 投票 0

我可以在 Parallel.For Local Final 部分使用 Kahan 求和吗?

通过 Parallel.For 循环的向量乘法实现该矩阵后,我需要使用 Kahan Summation 对结果求和以减少数值误差。是否可以? 这是我的本地鳍...

回答 1 投票 0

在Task.Run中使用CancellationToken超时不起作用[重复]

好的,我的问题很简单。为什么这段代码不抛出TaskCancelledException? 静态无效Main() { var v = Task.Run(() => { 线程.睡眠(1000); 返回 10; ...

回答 4 投票 0

我需要处置任务吗?

我很享受使用 System.Threading.Tasks 的过程。然而,我看到的许多代码示例看起来都是这样的: Dim lcTask = Task.Factory.StartNew(Sub() DoSomeWork()) Dim lcTaskLong = 任务。

回答 1 投票 0

忽略在 Task.WhenAll 处抛出异常的任务并仅获取已完成的结果

我正在解决一个任务并行问题,我有很多任务可能会或可能不会抛出异常。 我想处理所有正确完成的任务并记录其余的任务。 Task.WhenAll 传播...

回答 3 投票 0

Mutex.TryOpenExisting() 是线程安全的吗?

我使用Mutex.TryOpenExisting()。我想知道线程安全吗? 公共类 MutexNamedSystemDemo { 私有 const string _mutexName = @"Global\{C7F2DE44-8927-4B01-B8E1-D8F158A483A8}"...

回答 1 投票 0

为什么在 C# 内联中使用任务和异步等待?

他们说任务很好,因为它们是非阻塞的。这就说得通了。一段时间以来,我们有了异步的一切——mvc 中的异步操作、异步 Web api 调用、异步 ef 方法等。 第一个...

回答 1 投票 0

我该如何做与TaskCompletionSource<nothing>等效的事情?

我想要一个类似 EventWaitHandle 的任务,我在一端等待它,然后将其设置为在另一端完成。 TaskCompletionSource 几乎是我想要的,但它需要我传递一个

回答 2 投票 0

我在“任务不起作用并且发生竞争条件”中使用了“锁定”

我在“任务”中使用了“锁定”,它不起作用并且发生了竞争条件 我定义了一个 Counter,它最终应该返回 0,因为 Method 会增加 C 的值...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.