Кроме изолированных по памяти потоков (можно в общем адресном пространстве - например, несколько ББ в одном процессе, что позволяет никогда не пересечься по указателям, но иметь спокойно общие массивы чего-нибудь, например, для вычислительной обработки или быстрого обмена сообщениями), приемлемы ещё "зелёные потоки", например, для ББ - это подходы с сопрограммами, Дмитрия Дагаева и мой.

Если у вас поток выполнения не произвольный, а перемежённый ручными передачами управления диспетчеру, то не возникает проблемы "а в подоходящем ли месте заморозили поток для сборки мусора" (иначе, действительно, приходится дёргать туда-сюда поток, смотреть контекст и т.п. - так делалось в Active BlackBox).

Ну, это, естественно. не для случая жёсткого реального времени. Там выделение памяти и сборка мусора должны быть выключены после старта. И дальше - только фиксированное число объектов. Если для задачи они нужны в переменном по времени количестве - то они крутятся в пулах.