如何使用多核而不是多线程进行编程?

Aat*_*ikh 0 c++ multithreading raspberry-pi

我正在研究一个项目(硬件:RaspberryPI 3B +),该项目具有大量的计算和并行处理。目前,我注意到代码性能有些滞后。因此,我一直在寻找有效的方法来改善代码及其性能。

目前,我正在使用C语言(因为我可以轻松地访问和操作较低级别的驱动程序)并开发自己的一组函数,库和驱动程序,其运行速度比任何其他预定义或现成的库或插件都要快。

现在,我想使用单独的内核来执行相应的任务,而不是基于软件的多线程读取(Pthread)。那么,关于如何使用RaspberryPI的不同核心的任何建议或指南?

此外,如何检查CPU使用率以选择最佳内核来执行特定任务?

致谢,阿提夫·谢赫(Aatif Shaikh)

Mic*_*kis 6

在C / C ++级别,您无权访问哪个CPU内核将运行哪个线程。只需使用C ++ 11标准线程,然后让OS调度程序确定哪个线程在何处运行。

就是说,Linux有任务集工具来检查线程的亲和力,还有sched_setaffinity()函数。

  • 在操作系统级别。即,您调用的是操作系统提供的功能,而不是C ++标准提供的功能(您不更改语言,但是链接到依赖于操作系统的库)。如果PI提供了sched_setaffinity(),我已经提到过。Windows具有另一组相关功能。 (2认同)