以编程方式控制多任务

时间:2011-06-22 20:37:54

标签: multithreading multitasking

  1. 是否可以以编程方式映射要在指定处理器或核心上执行的特定指令(或事件完整过程)(假设我们有多个处理器或核心)?
    例如。 (我希望我的程序执行某些指令,如mov al, 5或处理器1上的代码块)。
  2. 我们可以使用并行API(例如MPI消息传递接口)吗?

2 个答案:

答案 0 :(得分:3)

在许多操作系统上,您可以指定一组可以运行线程或进程的处理器。这称为“CPU亲和力”或“处理器亲和力”。如果此“set”仅包含一个元素,则线程或进程将仅在指定的处理器上运行。

在Linux上,这是通过sched_setaffinity调用完成的;在Windows上,呼叫为SetThreadAffinityMask

请注意,如果代码当前正在未包含在允许集中的处理器上运行,则设置关联可能会导致上下文切换,因为迁移了进程/线程。

答案 1 :(得分:1)

可能的AFAIK

在.net中,您可以设置线程关联性“线程应在哪个核心运行”检查this