c#-在Mono(Linux)上为当前线程设置处理器关联

我正在编写一个自定义任务调度程序,我想知道是否有任何方法可以为Mono上的当前线程设置处理器亲和力(在Linux上运行).对于在Windows上运行的.NET运行时,我已经按照Lenard Gunda的Running .NET threads on selected p...

我正在编写一个自定义任务调度程序,我想知道是否有任何方法可以为Mono上的当前线程设置处理器亲和力(在Linux上运行).

对于在Windows上运行的.NET运行时,我已经按照Lenard Gunda的Running .NET threads on selected processor cores文章使它起作用.但是,他的方法在Mono(和Linux)上失败了,因为:

>它要求对Kernel32.dll库中的GetCurrentThreadId进行P / Invoke调用.
> Process.Threads属性当前在Mono上返回一个空集合.

请问有人有解决方法吗?

解决方法:

请注意,您实际上无法控制何时运行任务,这取决于内核.
无论如何,在Linux上,您将需要P / Invoke到sched_setaffinity()才能将线程绑定到特定的cpu.

有关接口,请参见man sched_setaffinity.

本文标题为:c#-在Mono(Linux)上为当前线程设置处理器关联

基础教程推荐