2013-10-15 13 views
24

Sự khác biệt/kết nối giữa các đối tượng này trong V8 là gì? Liệu một ngữ cảnh "thuộc về" đối với một Cô lập hay ngược lại?Điểm khác nhau giữa v8 :: Isolate và v8 :: Context là gì?

Tôi biết rằng một đơn Isolate chỉ có thể được truy cập bởi một luồng tại một thời điểm (và đó là điều v8 :: Locker là dành cho tôi đoán?).

Tôi đã xem qua các tài liệu nhưng tôi dường như không thể nắm bắt được các khái niệm này - bất kỳ trợ giúp nào đều được đánh giá cao!

Trả lời

26

Tôi chắc chắn những điều sau đây là đơn giản hóa, nhưng nó hoạt động cho tôi.

An cách ly là bản sao độc lập của thời gian chạy V8, bao gồm trình quản lý heap, bộ thu gom rác, v.v. Chỉ có thể truy cập một dòng riêng biệt.

Tuy nhiên, một cách ly không đủ để chạy tập lệnh. Bạn cũng cần một đối tượng toàn cục (root). Một bối cảnh xác định môi trường thực thi tập lệnh hoàn chỉnh bằng cách chỉ định một đối tượng trong vùng của một phân đoạn như một đối tượng chung.

Do đó, không chỉ có nhiều ngữ cảnh "tồn tại" trong một chủng nhất định, nhưng chúng cũng có thể chia sẻ bất kỳ hoặc tất cả các đối tượng của chúng một cách dễ dàng và an toàn. Đó là bởi vì các vật thể của chúng thực sự thuộc về cô lập và được bảo vệ bởi khóa độc quyền của cô lập.

26

Isolates, như tên cho thấy, được đóng hoàn toàn với thế giới bên ngoài, vì vậy Isolates có thể chạy song song vì chúng là các phiên bản hoàn toàn khác nhau của V8. Hãy suy nghĩ về một Isolate như một sandbox - một môi trường chạy V8.

Bây giờ trong một Isolate, bạn có thể có nhiều ứng dụng JavaScript không liên quan chạy đồng thời. JavaScript cung cấp rất nhiều cơ sở ngôn ngữ cấp độ toàn cầu, và có nhiều ứng dụng không liên quan gây rối với những "singletons" này không phải là một ý tưởng tốt. Vì vậy, trong một phiên bản V8 được gọi là Isolate, bạn có thể xác định nhiều Contexts để các ứng dụng không liên quan có thể làm những gì họ cần làm mà không can thiệp lẫn nhau.

Đây không phải là sự tương tự hoàn hảo, nhưng nếu bạn biết công cụ web Java, hãy tưởng tượng nhiều phiên bản của Tomcat được triển khai trên cùng một máy và sau đó mỗi cá thể của Tomcat chạy các ứng dụng riêng biệt với ngữ cảnh web của riêng chúng và web.xml. Đó là loại như thế.

Hy vọng điều đó sẽ hữu ích.

+0

cách ly chia sẻ cùng một thông tin Nền tảng, vì vậy chúng không bị cô lập. Chúng không khác "hoàn toàn" – xaxxon

Các vấn đề liên quan