Это - 1 Мбит стека на поток? Или это - просто потоки CLR?
Я хочу знать, что память по верхней части собственных окон распараллеливает (C++) и потоки CLR как представление через Диспетчер задач.
Спасибо
По умолчанию используется 1 МБ как для родных, так и для CLR потоков. Вы можете изменить это значение, хотя обычно это плохая идея.
См. Блог Марка Руссиновича о ограничениях ядра win32, чтобы узнать, насколько велик отдельный поток и сколько накладных расходов.
Трудно предсказать, сколько ресурсов использует поток .NET. Думаю, не более того.
Объем служебной памяти (в ОЗУ) составляет одну страницу памяти. Итак (в зависимости от вашей платформы) это, вероятно, будет 4 КБ.
Размер стека по умолчанию для обоих составляет 1 МБ. Однако это только виртуальная память, поэтому накладные расходы на ОЗУ отсутствуют, если она не используется.
Согласно предыдущим ответам, базовые накладные расходы составляют 1 МБ на поток. Я не буду вдаваться в подробности - они есть в других ответах.
Для потоков Microsoft Visual C / C ++ у вас также есть накладные расходы на поток любого рабочего пространства времени выполнения C, которое выделяется по запросу (и сохраняется с помощью локального хранилища потоков TlsAlloc ()) для выполнения такой работы, как sprintf (), scanf ( ), strtol () и т. д. У меня нет точных цифр - вам нужно отсканировать исходный код на Microsoft CRT, чтобы рассчитать это.
Для других сред выполнения C / C ++ (gcc / g ++ / borland / digital mars) могут или не могут быть аналогичные данные для каждого потока, это детали реализации.
Никто из нас не знает внутреннего устройства .Net Execution Engine, но, вероятно, там также хранятся некоторые данные для каждого потока. Будет сложно понять, что это за накладные расходы.