Один стек для каждого потока, все потоки имеют одинаковые кучи.
Нет «последовательного потока» потоков. Поток - это объект операционной системы, в котором хранится копия состояния процессора. Состояние процессора включает в себя значения регистра. Одним из них является ESP, указатель стека. Другим действительно важным является EIP, указатель инструкций. Когда операционная система переключается между потоками, она сохраняет состояние процессора в текущем объекте потока и перезагружает состояние из объекта потока для потока, который был выбран для запуска следующим. Процессор теперь просто продолжает работать с того места, где он остановился ранее.
Начало темы, возможно, теперь легко понять. Операционная система выделяет мегабайт памяти для стека. И инициализирует значение регистра ESP для указания на эту память. И устанавливает значение регистра EIP равным адресу метода, с которого должен начать выполняться поток. Значение делегата ThreadStart в C #.