Я кодирую программное обеспечение, похожее на «демон», которое выполняет некоторые операции в цикле (вход в систему где-то, выполнение некоторых операций и выход из системы) с использованием многопоточности.Мое приложение запускает около 1000-2000 потоков, и эти потоки работают.Итак, вот мой журнал htop вначале ~ 10 минут:
Итак, на скриншоте выше видно, что работает некоторое количество потоков (упорядоченных по зеленому статусу R)
Ночерез некоторое время это происходит:
Как вы можете видеть, периодически запускается только один-три потока (кажется, что система замедляет потоки или делает их спящими).Приложение запускает потоки для небольшой работы (это занимает от 10 секунд до 1 минуты) и после того, как поток умирает. Исправлено, что Исполнитель пула потоков создает новые потоки для выполнения той же работы.Поэтому, насколько я понимаю, скорость выполнения потоков должна быть одинаковой.Но это замедляется через ~ 10-20 минут.Обычно работает потоки в htop до ~ 500-200-300-100 потоков и до ~ 3-30-60 потоков каждый раз.Но после этих 10-20 минут только один поток выполняется.Так можете ли вы сказать мне, что происходит и как это исправить?