2013-09-01 42 views
6

Từ Performance và Khả năng mở rộng chương của JCIP book:Điều gì có nghĩa là "đồng bộ hóa nhanh" không được đồng bộ hóa?

Cơ chế đồng bộ được tối ưu hóa cho trường hợp uncontended (dễ bay hơi luôn là uncontended), và tại văn bản này, chi phí hiệu suất của một "nhanh - "phạm vi đồng bộ hóa không được điều chỉnh" phạm vi từ 20 đến 250 chu kỳ đồng hồ cho hầu hết các hệ thống.

Tác giả có ý nghĩa gì bởi đường dẫn nhanh đồng bộ hóa không được giám sát ở đây?

+0

Bạn đã thực hiện bất kỳ tìm kiếm nào trên google chưa. Điều này như đã đưa ra cho tôi: https://blogs.oracle.com/dagastine/entry/java_synchronization_optimizations_in_mustang – Gray

Trả lời

7

Tôi không quen thuộc với chủ đề của cuốn sách, nhưng nói chung "đường dẫn nhanh" là nhánh kiểm soát có thể cụ thể hiệu quả hơn những người khác và do đó được ưu tiên, nhưng không thể xử lý các trường hợp phức tạp.

Tôi giả định rằng cuốn sách đang nói về khối synchronized của Java. Trong trường hợp này, đường dẫn nhanh có nhiều khả năng là nơi dễ phát hiện ra rằng không có chủ đề nào khác truy cập cùng một dữ liệu. Những gì cuốn sách đang nói, sau đó, là việc thực hiện synchronized đã được tối ưu hóa để có hiệu suất tốt nhất trong trường hợp chỉ có một chủ đề thực sự đang sử dụng đối tượng, trái với trường hợp có nhiều luồng và đồng bộ hóa phải thực sự dàn xếp trong số đó.

2

Bước đầu tiên để có được khóa đồng bộ là một ghi dễ bay hơi (trường chủ sở hữu màn hình). Nếu khóa không bị quấy rầy thì đó là tất cả những gì sẽ xảy ra.

Nếu khóa bị tranh cãi thì sẽ có nhiều công tắc ngữ cảnh và các cơ chế khác sẽ tăng chu kỳ đồng hồ.

+0

Tôi không hiểu làm thế nào điều này ansswers câu hỏi của một "con đường nhanh" là gì? Nếu có điều gì đó tiềm ẩn ở đây, bạn có thể làm rõ điều đó không? – Geek

+0

Đường dẫn nhanh là đọc & ghi của một trường đơn lẻ. Đường dẫn chậm là việc tạm dừng một luồng và lưu ngữ cảnh luồng. –

14

Có hai khái niệm riêng biệt tại đây.

  1. Fast-đường dẫn và Slow-đường dẫn mã
  2. Uncontended và đồng bộ hóa tranh luận

Slow-path vs đang Fast-đường

Đây là một cách khác để xác định nhà sản xuất mã nhị phân của máy cụ thể.

Với HotSpot VM, chậm đường dẫn mã là mã nhị phân được tạo ra bởi một C++ thực hiện, nơi mã nhanh đường có nghĩa là mã được tạo ra bởi trình biên dịch JIT.

Nói chung, mã đường dẫn nhanh được tối ưu hóa nhiều hơn. Để hiểu đầy đủ về các trình biên dịch JIT wikipedia is a good place to start.

Uncontended và tranh đồng bộ

Java của đồng bộ hóa cấu trúc (Monitors) có khái niệm về quyền sở hữu. Khi một chủ đề cố gắng khóa (chiếm quyền sở hữu) màn hình, nó có thể bị khóa (thuộc sở hữu của một chủ đề khác) hoặc được mở khóa.

đồng bộ Uncontended xảy ra trong hai kịch bản khác nhau:

  1. Unlocked Monitor (sở hữu đạt được eo biển xa)
  2. Monitor đã thuộc sở hữu của cùng một sợi

tranh đồng bộ, mặt khác, có nghĩa là chuỗi sẽ bị chặn cho đến khi chuỗi chủ sở hữu giải phóng khóa màn hình.

Trả lời câu hỏi

By nhanh đường uncontended đồng bộ các phương tiện tác giả, bản dịch bytecode nhanh nhất (nhanh-path) trong kịch bản giá rẻ nhất (đồng bộ hóa uncontended).

+0

Câu trả lời hay. Rất độc đáo giải thích – Pigol

+0

Điều này chắc chắn sẽ là câu trả lời được chấp nhận! – ccpizza

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