У меня есть программа C ++ с HMI.Каждый раз, когда пользователь нажимает / нажимает кнопку на HMI, выполняются некоторые расчеты.Если это один щелчок, тогда я выполняю вычисления один раз, а если это долгое нажатие, я продолжаю вычислять, пока пользователь не отпустит кнопку.
В любом случае я использую boost :: thread для выполнения вычислений.,
Я создаю поток для каждого вычисления следующим образом:
extra_trajectory_calc_thread = boost :: thread (boost :: bind (& MyClass :: populate, this, arg1, arg2, arg3));extra_trajectory_calc_thread.detach ()
(Additional_trajectory_calc_thread является приватным членом моего класса)
Каждый раз, когда пользователь нажимает один раз на кнопку, этот поток создается один раз.И каждый раз, когда пользователь нажимает на кнопку, один поток создается каждую 1 секунду, пока он не отпустит кнопку.
Когда я впервые запускаю программу, моя программа очень отзывчива, поэтому проблем с производительностью нет.Но когда общее количество созданных потоков достигает примерно 300 (например, 50 одиночных кликов + 250 секунд времени печати), система замедляется.
Почему это может происходить?Выделяется ли дополнительная память каждый раз, когда создается поток?Может ли это быть причиной?Или что-то другое?Как я могу проверить и найти основную причину?
Заранее спасибо.