我实际上正在使用SMP进行编译器项目,并且想要使用pthreads进行编码,并且听说过许多并行的东西打开mpi等等,所以首先从调用pthread时如何将这个线程分配给核心开始,有什么方法可以通过 pthreads 将线程分配给不同的核心?
查看 pthreads 教程,例如 this。但总的来说,我建议使用比 pthreads 更高级别的库,因为使用它们会更简单/更系统。例如,Boost::Threads 或英特尔 TBB。
系统会将线程分配给可用的核心,如果其他地方有空闲资源,则将它们移动。
操作系统在分配资源方面通常比我做得更好,但如果你真的愿意,大多数操作系统都有一种将线程分配/限制到特定核心/处理器的方法。在 Linux 上,使用 sched_setaffinity
最简单的答案是肯定的——一般来说,不同的线程可能会自动在不同的内核上运行,而无需指定线程运行的位置。
在深入研究特定的线程库/思维方式之前,您似乎需要对多线程编程进行一般性的介绍/入门。 在做任何其他事情之前,请阅读上面 Amit 的“什么是线程”部分,然后开始查看 POSIX 线程、Windows 线程、TBB、Boost 线程或任何其他您感兴趣的库/包装器的细节。