Здравствуйте, gandjustas, Вы писали:
G>Конечно существуют. Основная рекомендация — не создавать потоки. Вообще забудь про thread.start. Забудь что у тебя есть потоки.
G>Используй асинхронный код, он сам заустит продолжение где надо и не будет заниматься фигней, при этом не съест потоков больше, чем в thread pool.
И как результат: асинхронные таски повисли на каком-нибудь _event.WaitOne(). Пул исчерпан. Новые потоки не стартсятся. Если раньше сервер жил несколько месяцев без перезагрузки, теперь он будет умирать каждый час.
Перейти от потоков к процессам, писать на чисто неблокирующий код без вечных вейтов, используя APC там, где это возможно. Перейти от потоковой модели к очереди задач и конечному автомату. В идеальном мире при отсутствии временных рамок и нелимитированных ресурсах, я бы поступил так. К сожалению, сейчас это невозможно.