Re[2]: Как оптимизировать выполнения 10000 параллельных задач?
От: LWhisper  
Дата: 04.08.16 11:05
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Конечно существуют. Основная рекомендация — не создавать потоки. Вообще забудь про thread.start. Забудь что у тебя есть потоки.

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

Перейти от потоков к процессам, писать на чисто неблокирующий код без вечных вейтов, используя APC там, где это возможно. Перейти от потоковой модели к очереди задач и конечному автомату. В идеальном мире при отсутствии временных рамок и нелимитированных ресурсах, я бы поступил так. К сожалению, сейчас это невозможно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.