【发布时间】:2018-10-17 10:30:38
【问题描述】:
我有带有 HMI 的 C++ 程序。每次用户在 HMI 上点击/按下按钮,都会进行一些计算。如果是单击,那么我会计算一次,如果是长按,我会一直计算直到用户释放按钮。
无论哪种情况,我都使用 boost::thread 进行计算。
我为每个计算创建线程如下:
additional_trajectory_calc_thread = boost::thread(boost::bind(&MyClass::populate, this, arg1, arg2,arg3)); Additional_trajectory_calc_thread.detach()
(additional_trajectory_calc_thread 是我班级的私人成员)
每次用户点击一次按钮时,该线程都会创建一次。并且每次用户按下按钮时,每 1 秒创建一个线程,直到他释放按钮。
当我第一次运行程序时,我的程序响应速度非常快,因此没有性能问题。但是当创建的线程总数达到 300 左右时(比如 50 次单击 + 250 秒的总按下时间),系统会变慢。
为什么会发生这种情况?每次创建线程时是否分配额外的内存?可能是这个原因吗?或者是其他东西?如何检查并找到根本原因?
提前致谢。
【问题讨论】:
标签: multithreading performance boost