Я только начал работать с потоками и быстро пришел к самому распространенному вопросу о том, сколько потоков слишком много?
После некоторых исследований я еще больше смутился.C# Максимальное количество потоков
задача
У меня есть 16 ядер и приложение генерации 1000 объектов, будучи несмотря от строительных параметров в соответствии. Создание 1000 потоков обычно создавало бы огромные накладные расходы, разрушающие преимущества производительности от многопоточности в соответствии с документацией msdn и Maximum number of threads. Также я должен оставаться в пределе 3.5 NET 32 бит (Maximum number of threads in a .NET app?).
Вопрос 1
Имея такую одностороннюю задачу, можно создать больше потоков, чем ядер на компьютере? Оптимизирует ли .NET что-то там? Каково максимальное количество потоков, которые я должен использовать?
Вопрос 2
Есть простое красивое решение, другой затем очереди его с предельными ресурсами? Что-то вроде семафора, где я создаю все 1000 потоков, но сразу же инактивирует потоки, чтобы не выделять стек потоков по умолчанию?
Пул потоков - полезная концепция. –
Вы не должны создавать столько потоков, создавать столько потоков, сколько количество ядер и повторно использовать поток для выполнения нескольких задач. – Marko
Отсутствует в вашем вопросе то, что вы думаете о потоке. Почему, по вашему мнению, вам нужно 1000 потоков для создания 1000 объектов? – CodeCaster