gpt4 book ai didi

c# - 我们可以在 .NET 中安全地执行核心关联吗?

转载 作者:太空狗 更新时间:2023-10-30 00:37:27 31 4
gpt4 key购买 nike

我在 StackOverflow 中查看了为线程实现 Core Affinity 的信息,
在 .NET 中。

一些答案说 .NET 不支持它自己的(托管)线程,
并且仅支持在操作系统上运行的非托管线程。

另一方面,其他答案中提到了以下属性:
- ProcessThread.IdealProcessor link
- ProcessThread.ProcessorAffinity link

可以看出,这两个属性不是 Thread 类的属性,而是 ProcessThread 类的属性。

所以我想问一下:
如果有人正在创建 .NET 应用程序,
并希望为其应用程序的线程设置核心关联,
在 .NET 托管线程上这样做是否安全且受支持?

(如果是,那么我想知道为什么这 2 个属性会暴露在 ProcessThread 类中
而不是在 Thread 类上?)

PS:我使用 .NET Framework v3.5 和 v2.0,
而不是较新版本的框架。

最佳答案

不。

.NET 线程不会 1:1 映射到操作系统线程。线程亲缘关系用于操作系统线程。由于运行时可以随意在 OS 线程之间切换 .NET 线程,因此设置处理器关联充其量无济于事,并在典型的多线程场景中浪费性能。

请注意,ProcessThread 仅包含有关在进程中运行操作系统线程的信息。当您询问进程具有哪些线程时,这就是您所得到的 - 它是操作系统的一部分,而不是 .NET。相比之下, Thread 是关于你的线程,而且只有被管理的线程。

关于c# - 我们可以在 .NET 中安全地执行核心关联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50700915/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com