首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET中使用任务并行库指定特定的CPU核?

在.NET中使用任务并行库指定特定的CPU核?
EN

Stack Overflow用户
提问于 2020-04-30 12:04:26
回答 2查看 520关注 0票数 1

我在做一个项目,我们需要为一些功能实现多任务。为此,我们使用了.NET的一个伟大的API -任务并行库(TPL)。

例如:第三方物流代码(取自这里)

代码语言:javascript
复制
static void Main()
{
    var options = new ParallelOptions()
    {
        MaxDegreeOfParallelism = 2
    };
    List<int> integerList = Enumerable.Range(0,10).ToList();
    Parallel.ForEach(integerList, options, i =>
    {
        Console.WriteLine(@"value of i = {0}, thread = {1}",
            i, Thread.CurrentThread.ManagedThreadId);
    });

    Console.WriteLine("Press any key to exist");
    Console.ReadLine();
} 

如我们所知,我们可以使用'MaxDegreeOfParallelism‘选项来设置要使用的最大线程。

假设我们有16个虚拟核心VM,我想运行的应用程序应该只针对少数选定的核心,比如C1、C2、c8、c9。

请指导我如何使用第三方物流?

谢谢你,维杰

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-30 12:09:57

这种运行时的微优化远远超出了C#的范围。而且,绝对不应该将硬编码到程序本身中。通常,.NET和OS的负载平衡特性将有效地处理运行中的线程。

有了这样的差别,速度暴涨可能适用于:https://ericlippert.com/2012/12/17/performance-rant/

但是,您可以在操作系统中设置这样的限制,甚至无需查看应用程序代码:https://www.techjunkie.com/restrict-apps-cpu-cores-processor-affinity/ --这听起来更像是您需要/应该使用的东西。

票数 2
EN

Stack Overflow用户

发布于 2020-04-30 12:11:22

我不认为您可以在TPL抽象级别上这样做,但是这个回答可能对您有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61522970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档