Извините, что этот ответ не имеет прямого отношения к вопросу, но, пытаясь ответить на вопрос, он просто получил большое значение для комментариев.
@ shahka, разница в том, что когда вы пытаетесь подключиться к БД, код переходит в «состояние ожидания» (как обратный вызов), поэтому процессорное время не используется. Не имеет значения, что делает СЕССИЯ или НИТИ, а имеет значение то, что ДРУГОЙ процессор / ядро делает.
Например, найдите старый, не многоядерный процессор. Настройте ваш образец на 10 секунд, затем на 2-5 секунд или около того, затем снова на 10 секунд. Сделайте это около 20000 раз. Пока он работает, попробуйте и используйте box, посмотрите, насколько он отзывчивый. Перемещайте окна, наблюдайте за использованием процессора и т. Д.
Это дает вам пример того, что происходит с веб-сервером этого человека. Он перестает отвечать на запросы, потому что планировщик потоков будет стремиться «отдать предпочтение» CPU / Core, который НЕ «раскручивается» (как мы его называем). Таким образом, ВСЕ веб-запросы, операции ОС и т. Д. Будут происходить на ДРУГОМ ядре, что приводит к его перегрузке, что также создает ощущение «раскрутки».
Теперь у вас есть моменты, когда вы можете зациклить процессор, и это не будет иметь значения. Но за все мои годы программирования я никогда не считал необходимым написать такой замкнутый цикл (специально). Некоторые из них возвращаются к правильному и неправильному поступку. Часто что-то работает неправильно, но это не значит, что оно работает ПРАВИЛЬНО.
Если вы хотите хороший пример этого, идите и выберите любой вирус на планете и проанализируйте его. Вы обнаружите, что для того, чтобы нанести ущерб, им (вирусописателям) часто приходится делать вещи «неправильным» образом. Конечно, он выполняет свою работу, но он также разрушает вирус, скажем, на другой языковой версии Windows, или он разбивает всю машину, отрицая ее назначение и т. Д.
Грег Хьюгилл был одним из моих ранних учителей об этом типе вещей, и так как я работал с ним в течение многих лет и поддерживал, а затем проверял его программное обеспечение, я многому у него научился Многое в том же духе, я пытаюсь сказать вам, почему ваш пример кода не подходит. строго говоря, код в порядке. Оно работает. Это хорошо написано. Но он не работает должным образом и имеет неблагоприятные побочные эффекты, которые другие, возможно, восхищают программистов, которые читают это в поисках знаний, не до конца понимают. Вот почему я не рекомендовал ваш образец.