LINUX.ORG.RU

История изменений

Исправление shahid, (текущая версия) :

Общие — в плане один и тот же код, используемый разными веб-страницами

Если потоки с общими данными, то значит будет shared-буфер, доступный для чтения/записи всем потокам. Значит нужна система блокировок между тредами и сборщик мусора для shared-буфера отдельным потоком. Но этот подход обычно выливается в ещё бОльшие тормоза из-за постоянных взаимных блокировок. Ну и дополнительные накладные расходы на RAM/CPU. В общем, получится либо кривой тормозной велосипед, либо джава.

Другой подход - share-nothing архитектура, когда нет разделяемого буфера. Т.е. как у хрома. Её минус - одинаковые данные дублируются между процессами, т.е. требуется больше RAM и memcpy() для передачи любых данных между потоками процессами.

Mozilla servo - третий подход к распаралеливанию. Вместо жирных процессов (одна вкладка - один процесс) используется модель акторов, т.е. множество мелких легковесных потоков, которые будут совместно участвовать в рендере. Но для этого нужно переписать весь браузер с нуля на соотв. ЯП.

Исходная версия shahid, :

Общие — в плане один и тот же код, используемый разными веб-страницами

Если потоки с общими данными, то значит будет shared-буфер, доступный для чтения/записи всем потокам. Значит нужна система блокировок между тредами и сборщик мусора для shared-буфера отдельным потоком. Но этот подход обычно выливается в ещё бОльшие тормоза из-за постоянных взаимных блокировок. Ну и дополнительные накладные расходы на RAM/CPU. В общем, получится либо кривой тормозной велосипед, либо джава.

Другой подход - share-nothing архитектура, когда нет разделяемого буфера. Т.е. как у хрома. Её минус - одинаковые данные дублируются между процессами, т.е. требуется больше RAM и memcpy() для передачи любых данных между потоками процессами.