问题标签 [parallel.invoke]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
25428 浏览

c# - Parallel.Invoke 和 Parallel.ForEach 本质上是一样的吗?

“相同的事情”我的意思是这两个操作基本上做同样的工作,它只是归结为根据你必须使用的内容调用哪个更方便?(即代表列表或要迭代的事物列表)?我一直在搜索 MSDN、StackOverflow 和各种随机文章,但我还没有找到明确的答案。

编辑: 我应该更清楚;我在问这两种方法是否做同样的事情,因为如果他们不这样做,我想了解哪种方法更有效。

示例:我有一个包含 500 个键值的列表。目前我使用一个foreach循环遍历列表(串行)并为每个项目执行工作。如果我想利用多个核心,我应该简单地使用Parallel.ForEach吗?
假设为了争论,我有一个包含 500 个代表的数组来处理这 500 个任务 - 最终效果会是任何不同的调用Parallel.Invoke并给它一个包含 500 个代表的列表吗?

0 投票
1 回答
530 浏览

c# - Parallel.Invoke and thread invocation - Clarification?

I have this code which creates a deadlock :

Result :

Before 1
(and deadlock....)

I know that this is a bad practice to lock over instances beyond code's control or , this. But it's just for this question.

I can understand why a deadlock is created here.

The main thread acquires the lock(test) in main and then a new thread starts to invoke DoWorkUsingThisLock - there it tries to acquire a lock over the same instance variable and it's stuck ( because of t1.Wait() at main)

OK

But I've seen this answer here which also creates deadlock.

The result is :

Before ClassTest.DoWorkUsingThisLock 1
Before ClassTest.DoWorkUsingThisLock 2
ClassTest.DoWorkUsingThisLock 1 // <---- how ?
ClassTest.DoWorkUsingThisLock Done 1

Question:

How come it DID acquire the lock for the first invocation (DoWorkUsingThisLock(1))? The lock at main is still blocked due to Parallel.Invoke which DOES block ! I don't understand how the thread has succeeded to enter the lock(this) section.

0 投票
1 回答
531 浏览

vb.net - 如何让 log4net 为 Parallel.Invoke 中的每个操作创建单独的日志文件?

我有一系列Action我想使用Parallel.Invoke. 但是对于每一个Action我都希望有一个由 log4net 创建的单独的日志文件。在我的 log4net 配置文件中,我添加了这个:

如果只有一个 Action 可以执行此操作,则可以正常工作:日志文件具有正确的文件名。

Action但是,如果要执行的日志不止一个,那么所有日志条目都会在同一个日志文件中结束。

创建的代码Action是这样的:

创建的日志文件使用分配给UniqueIdentifier属性的值之一。我无法弄清楚这个值是如何被挑选出来的:它并不总是第一个或最后一个。在上面的示例中,仅创建了文件3S2M3_0004.log并且它包含所有日志条目。

我已经尝试过 LogicalThreadContext 和 ThreadContext 并且没有区别。

0 投票
2 回答
177 浏览

c# - 使用 1 个 DataReader 进行多个数据库调用

我只是在学习使用Parallel.Invoke()并试图将注意力集中在返回多个DataSets() 例如,让我们采用下面的示例语法 - 我如何为我需要返回ExecuteSqlQuery()的 3 个中的每一个使用该方法?DataSets()

我这个项目的目标框架是 Net Framework 4

0 投票
2 回答
1293 浏览

c# - 如何在 parallel.invoke 中动态添加方法

下面给出的是示例代码。

我想动态调用“MainFunc”方法 10 次。因此,我使用了 foreach 循环。但是,该方法只运行一次。请帮忙。提前致谢 :)

0 投票
0 回答
75 浏览

vb.net - 使用 Parallel.Invoke 时多个命令的 Informix SQL 连接的性能

据我所知,使用 Threading.Tasks.Parallel.Invoke 方法并行执行多个命令时,SQL 连接处理有两种方法。第一种方法是定义一个在所有线程之间共享的公共 SQL 连接。第二种方法是为每个线程打开一个新连接。

这是一个例子:

另一种方法是使用一个共享连接:

现在,应该首选这两种方式中的哪一种?哪一个会带来更好的性能?

据我观察,当使用共享连接时,就像在我的第二个示例中一样,SQL 命令是按顺序执行的。真的吗?

0 投票
3 回答
552 浏览

c# - 有条件的并行调用

我有一个场景,我想调用函数但希望有条件地调用它们。所以在下面的代码中,只会调用函数 2 和 3。但是,Action 部分不返回值,但在我的情况下,我想存储返回值。

最初我所拥有的代码低于代码,但这会调用所有函数。有什么想法吗?

0 投票
1 回答
441 浏览

c# - 我必须使用 C# 并行调用多个不同的 Web 服务

我有一个要求,我需要向不同服务器上托管的不同 Web 服务发送多个并行调用。我必须阅读配置文件才能知道必须进行多少次调用。假设有 4 台服务器,并且在每台服务器上托管一个 Web 服务。配置的值为 4 然后我必须并行调用每个服务 4 次。总调用数为 16。这是我所做的代码:

我实际上打了 14 到 16 个电话,所以出了点问题。这是正确的方法吗?

0 投票
1 回答
2154 浏览

c# - Parallel.Invoke vs Parallel.Foreach 用于在大型列表上运行并行进程

我有 C# 列表,其中包含大约 8000 个项目(文件路径)。我想在所有这些项目上并行运行一个方法。为此,我有以下 2 个选项:

1)手动将列表划分为小块(例如每个 500 大小)并为这些小列表创建操作数组,然后调用 Parallel.Invoke 如下所示:

2)第二个选项是运行 Parallel.ForEach 如下

  • 这里最好的选择是什么?
  • Parallel.Foreach 如何将列表分成小块?

请建议,提前谢谢。

0 投票
1 回答
263 浏览

c# - c# Parallel.Invoke vs Parallel.ForEach - 处理数据源并并行修改

有人可以解释使用什么路径Paralle.InvokeParallel.ForEach在这种情况下:

所以数据将像列表一样返回,然后我有特定的方法将根据类别属性处理列表中的某些记录。

我应该使用什么:.ForEach 或 .Invoke?