Состояние виртуальной памяти потока
Как мы все знаем, в случае нескольких потоков каждый поток поддерживает свой отдельный стек и состояние регистра.
они также поддерживают отдельное состояние виртуальной памяти или оно может использоваться совместно?
Я не думаю, что должны быть какие-либо проблемы в разделении состояния виртуальной памяти между процессами.
РЕДАКТИРОВАТЬ:
Если поток не поддерживает состояние, то почему третий вариант вопроса 1 по ссылке ( http://www.geeksforgeeks.org/archives/19913) не соответствует действительности?
3 ответа
Каждый процесс имеет свое собственное адресное пространство, то есть диапазон виртуальных адресов, к которым процесс может получить доступ. Каждый процесс может иметь несколько потоков. Итак, да, все потоки в процессе имеют одинаковое адресное пространство. Обратите внимание, что это основная причина, по которой переменные могут совместно использоваться несколькими потоками одного процесса без какого-либо специального механизма.
С другой стороны, нельзя разделять переменные между двумя отдельными процессами без использования специальных механизмов, таких как межпроцессное взаимодействие, потому что каждый процесс имеет свое собственное адресное пространство.
Они неизменно делятся памятью. И это может и действительно вызывает много проблем.
(Для начала проверьте тег "многопоточность".) Но несколько потоков позволяют вам прослушивать множество разных входных данных и позволяют всем этим ядрам ЦП заработать свою поддержку.
Правильно, два потока могут совместно использовать одно и то же пространство виртуальной памяти. Это по сути (очень поверхностно) определение потоков, поскольку они относятся к процессам.