相关疑难解决方法(0)

如何在不同的CPU内核上生成线程?

假设我在C#中创建了一个计算成本高的程序,比如将WAV文件列表编码为MP3.通常我会一次编码一个文件,但是假设我想让程序计算出我拥有多少CPU核心并在每个核心上启动编码线程.因此,当我在四核CPU上运行程序时,程序会发现它是一个四核CPU,可以看出有四个内核可以使用,然后生成四个用于编码的线程,每个线程都独立运行中央处理器.我该怎么做?

如果核心分布在多个物理CPU上,这会有什么不同吗?如果我有一台带有两个四核CPU的机器,是否有任何特殊注意事项,或者两个芯片中的八个内核在Windows中是否相同?

.net c# windows multithreading

58
推荐指数
5
解决办法
5万
查看次数

如何确定线程运行的CPU?

有没有办法确定给定线程在哪个CPU上运行?最好是在C#中,但C++会这样做.

.NET Process和ProcessThread类似乎不提供此信息.

ETA澄清:

我们正在开发一个服务器应用程序,用于处理http多播流并生成多个视频编码器.这在具有12个物理内核的系统上运行,产生24个逻辑CPU(超线程).通过TaskManager和ProcessExplorer,我们验证了我们生成的进程在逻辑CPU上均匀分布.但是,我们在一个CPU上看到了很多(内核?)活动,这些活动因占用不寻常的CPU时间而产生干扰.我们正在尝试确定在此特定CPU上运行的进程/线程.TaskManager和ProcessExplorer似乎都没有提供这些信息.如果他们这样做,请解释如何获得这些信息.

否则,我们正在考虑编写自己的工具来获取此信息.这就是我们需要帮助的地方.

我们知道如何更改线程亲缘关系(我们知道无法保证线程将与任何CPU保持关联,尽管在这种特殊情况下,占用CPU的线程仍然只与一个CPU相关联),但是为了做到这一点,我们需要首先确定需要重新定位WHICH进程/线程.这是这个问题的唯一目标.

我希望这有助于澄清问题.

c# c++ multithreading

14
推荐指数
1
解决办法
5854
查看次数

标签 统计

c# ×2

multithreading ×2

.net ×1

c++ ×1

windows ×1