C# 单核Plinq?
据我所知: 利用多核或多处理器进行编程称为 并行编程 但是如果我没有>1个核呢 命令是否类似于:C# 单核Plinq?,c#,.net,.net-4.0,plinq,C#,.net,.net 4.0,Plinq,据我所知: 利用多核或多处理器进行编程称为 并行编程 但是如果我没有>1个核呢 命令是否类似于: "abcdef".AsParallel().Select(c=>char.ToUpper(c)).ToArray() 将按顺序运行吗 (我知道,即使我有>1个内核,Plinq优化仍然可以选择不并行。但我的问题是拥有==1个内核。) 或 它仍然可以在多个线程(1个核心)中,如: (但我认为这不会是并行编程) 我有点困惑。任何帮助都将不胜感激。 您可以显式地将最大并发限制提高到该限制以上(或将
"abcdef".AsParallel().Select(c=>char.ToUpper(c)).ToArray()
将按顺序运行吗
(我知道,即使我有>1个内核,Plinq优化仍然可以选择不并行。但我的问题是拥有==1个内核。)
或
它仍然可以在多个线程(1个核心)中,如:
(但我认为这不会是并行编程)
我有点困惑。任何帮助都将不胜感激。
您可以显式地将最大并发限制提高到该限制以上(或将其降低到该限制以下),这样PLinq就可以自由地使用1到线程来完成工作。通常,只有当您的工作受到严重的I/O限制时,提高默认值才有用
换句话说,除非您使用更改默认的并发限制,例如,您的任务将使用单个核心上的单个线程运行。如果我有3个长计算,则在多线程环境或单线程环境中,所有3个线程的执行时间之和将相同,它只是每次给每个线程一个量……对吗?我知道这个命令
带有degreeofparallelism
,它用于一次阻止5个web服务之类的问题(这不是CPU密集型,而是阻止)WithDegreeOfParallelism也适用于我有8个核但我只想2个用于并行的情况…抱歉:-)但我不知道你的答案如何,回答了我的问题…:-)@RoyiNamir有1个核,PLinq的默认值是使用最大并发度1,也就是说,它将按顺序运行Linq查询。