sách gpt4 ăn đã đi

Tìm hiểu các thành phần AQS một cách đơn giản và chuyên sâu

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 24 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này giải thích một cách đơn giản về cách tìm hiểu các thành phần AQS, được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.

Trước hết, quy trình thực thi cơ bản của aqs là cố gắng lấy khóa và quay lại nếu thành công, nó sẽ vào hàng đợi đồng bộ hóa và chờ tài nguyên khóa. Dựa trên quy trình này, chúng ta có thể thấy rằng hàng đợi và các nút trong hàng đợi phải là hai điểm chính.

Trước tiên, chúng ta hãy xem cấu trúc của nút nút hàng đợi trong aqs:

Tìm hiểu các thành phần AQS một cách đơn giản và chuyên sâu

Có năm trường trong lớp này, chúng ta hãy xem chúng theo thứ tự:

1.prev, next: trỏ đến nút tiền nhiệm và nút kế tiếp. Từ đây, chúng ta có thể thấy rằng hàng đợi đồng bộ hóa trong aqs là một danh sách được liên kết hai chiều.

2.thread: đối tượng luồng hiện tại.

3.waitstatus: Trạng thái của nút hiện tại là một biến kiểu int, như sau:

  。

giá trị kiểu minh họa
-1 tín hiệu Các nút kế thừa của nút hiện tại bị chặn, vì vậy khi nút hiện tại được giải phóng hoặc hủy bỏ, các nút kế thừa của nó cần được đánh thức.
1 đã hủy bỏ Nút hiện tại bị hủy do hết thời gian chờ hoặc bị gián đoạn và nút sẽ không thay đổi sau khi vào trạng thái này.
Lưu ý: Đây là giá trị duy nhất lớn hơn 0. Nhiều logic phán đoán sẽ sử dụng tính năng này.
-2 tình trạng Nút hiện tại nằm trong hàng đợi điều kiện và không thể lấy được khóa trước khi điều kiện được đáp ứng.
-3 truyền bá Thông tin về khóa mà nút hiện tại thu được cần được chuyển đến các nút tiếp theo. Giá trị này được sử dụng trong chế độ khóa chung.
0 không có Trạng thái ban đầu của nút.

  。

nextwaiter: Nếu nút hiện tại ở chế độ chia sẻ, giá trị này sẽ trỏ đến nút chia sẻ. Nếu nút hiện tại nằm trong hàng đợi điều kiện, giá trị này sẽ trỏ đến nút tiếp theo đang chờ điều kiện.

Sau khi hiểu cấu trúc dữ liệu của nút nút, chúng ta hãy xem cấu trúc của hàng đợi đồng bộ hóa ở chế độ khóa độc quyền:

Tìm hiểu các thành phần AQS một cách đơn giản và chuyên sâu

Lưu ý: Nút đầu là nút nút mới được tạo bởi nút mới, trong khi nút đuôi trỏ trực tiếp đến nút cuối cùng trong hàng đợi.

Sau khi hiểu hàng đợi chế độ khóa độc quyền, chúng ta hãy xem hàng đợi đồng bộ hóa ở chế độ khóa chung (lưu ý sự khác biệt giữa chúng):

Tìm hiểu các thành phần AQS một cách đơn giản và chuyên sâu

Lưu ý: Khóa chia sẻ và khóa độc quyền nằm trong cùng một hàng đợi đồng bộ hóa, điều đó có nghĩa là các nút trong hàng đợi đồng bộ hóa có thể thuộc loại chia sẻ hoặc loại độc quyền.

Ngoài hàng đợi đồng bộ hóa được sử dụng bởi các khóa độc quyền và khóa chia sẻ, còn có một hàng đợi rất quan trọng đó là hàng đợi điều kiện. Chúng ta hãy xem xét nó:

Tìm hiểu các thành phần AQS một cách đơn giản và chuyên sâu

Hãy chú ý đến sự khác biệt giữa hàng đợi có điều kiện và hàng đợi đồng bộ hóa: 1. Con trỏ đầu và con trỏ đuôi, 2. Danh sách liên kết đơn.

Sau khi hiểu các cấu trúc dữ liệu cơ bản này trong aqs, cuối cùng chúng ta hãy xem các API do aqs cung cấp:

Chế độ khóa độc quyền:

  。

tên phương thức minh họa
giành được Chế độ độc quyền thu được khóa và không phản hồi với các ngắt. Nếu xảy ra ngắt, nó sẽ chỉ đặt trạng thái ngắt của luồng hiện tại thành đúng.
có được một cách gián đoạn Lấy khóa ở chế độ độc quyền Nếu luồng bị gián đoạn trong quá trình lấy khóa, một ngoại lệ ngắt sẽ được đưa ra trực tiếp.
giải phóng Giải phóng tài nguyên khóa

  。

Chế độ khóa chia sẻ:

  。

tên phương thức minh họa
đã mua lại được chia sẻ Chế độ chia sẻ lấy khóa và không phản hồi với các ngắt. Nếu xảy ra ngắt, nó sẽ chỉ đặt trạng thái ngắt của luồng hiện tại thành đúng.
có đượcchia sẻmột cách gián đoạn Chế độ chia sẻ lấy khóa. Nếu luồng bị gián đoạn trong quá trình lấy khóa, một ngoại lệ ngắt sẽ được đưa ra trực tiếp.
phát hànhchia sẻ Giải phóng tài nguyên khóa

  。

Hàng đợi điều kiện:

  。

tên phương thức minh họa
chờ đợi Chặn điều kiện chờ, nếu bị gián đoạn, một ngoại lệ ngắt sẽ được đưa ra
chờ đợi không ngừng nghỉ Chặn điều kiện chờ, không phản hồi với các ngắt, nếu xảy ra ngắt, nó sẽ chỉ đặt trạng thái ngắt luồng thành đúng
chờ nanos Đợi vài nano giây và ném ngoại lệ ngắt nếu bị gián đoạn
cho đến khi Đợi đến thời hạn và đưa ra ngoại lệ ngắt nếu bị gián đoạn
await(thời gian dài, đơn vị thời gian) Đợi một thời gian nhất định và đưa ra một ngoại lệ ngắt nếu bị gián đoạn
tín hiệu Đánh thức nút đầu tiên trong hàng đợi
tín hiệu tất cả Đánh thức tất cả các nút trong hàng đợi

  。

API mở rộng:

  。

tên phương thức minh họa
thử mua lại Cố gắng có được một khóa độc quyền mà không bị chặn
thửacquirenanos Cố gắng có được một khóa độc quyền trong nano giây được chỉ định và đưa ra một ngoại lệ ngắt nếu bị gián đoạn
thử phát hành Cố gắng mở khóa độc quyền mà không chặn
thửđãchia sẻ Cố gắng lấy khóa chung mà không chặn
thử mua lạisharednanos Cố gắng lấy khóa chia sẻ trong nano giây được chỉ định và đưa ra ngoại lệ ngắt nếu bị gián đoạn
thửphát hànhchia sẻ Cố gắng mở khóa chung mà không chặn

  。

Sau khi hiểu cấu trúc dữ liệu cơ bản và API của aqs được giới thiệu ở trên, bạn sẽ không còn bối rối khi đi tìm hiểu nguyên tắc triển khai của khóa độc quyền, khóa chia sẻ và hàng đợi có điều kiện.

Trên đây là toàn bộ nội dung bài viết này hi vọng nó sẽ giúp ích cho việc học của mọi người và cũng mong mọi người ủng hộ mình.

Liên kết gốc: https://segmentfault.com/a/1190000011552534.

Cuối cùng, bài viết về việc học các thành phần AQS một cách đơn giản và dễ dàng kết thúc ở đây. Nếu bạn muốn biết thêm về việc học các thành phần AQS một cách đơn giản và dễ dàng, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. ủng hộ blog của tôi trong tương lai! .

24 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress