【发布时间】:2018-05-02 13:43:32
【问题描述】:
我对多线程编程的了解不够。在我的 C++ 程序中,我创建了 10 个 pthread,每个 pthread 负责处理流向系统的实时数据的一部分。最终在 main() 内部,来自所有线程的处理过的数据被合并。据我所知,可以并行运行的线程的确切数量由每个插槽的核心数 x 每个插槽的线程数 x 插槽决定,在我的例子中是 8 (4 x 2 x 1)。那么在我的具有 10 个线程的应用程序中,是否没有发生颚化,并且在不同线程之间交换是调度程序所做的事情?如果没有,有什么方法可以确定吗?或者至少我可以知道这种交换需要多少毫秒?由于我的应用程序正在处理实时数据,因此确保所有线程并行运行至关重要。
【问题讨论】:
-
自 50 或 60 年前发明多任务处理以来,不同执行线程之间的“交换”一直在发生。如果您的系统支持 8 个并发线程,则需要进行此类交换。并且这种交换还包括在您的系统上运行的所有其他程序及其进程和线程。
-
std::thread::hardware_concurency您可能会感兴趣。
标签: c++ parallel-processing pthreads