Tôi cần trợ giúp trong việc hiểu mối quan hệ đồng bộ hóa. Tôi càng đọc nó một ví dụ để hiểu ví dụ, tôi càng cảm thấy mình không hiểu gì cả. Đôi khi tôi cảm thấy rằng ở đây là nó, tôi đã có nó, nhưng sau khi nhìn vào một ví dụ khác tôi bị lẫn lộn một lần nữa. Xin hãy giúp tôi làm đúng. Người ta nói rằng một hoạt động A đồng bộ hóa với một hoạt động B nếu A là một cửa hàng cho một số biến nguyên tử m, với ngữ nghĩa phát hành, B là một tải từ cùng biến m, với các ngữ nghĩa có được, và B đọc giá trị lưu trữ bởi A. Nó cũng nói rằng một hoạt động một xảy ra-trước khi phẫu thuật B nếuđồng bộ hóa với, xảy ra trước khi mối quan hệ và ngữ nghĩa phát hành thu được
- A được thực hiện trên các chủ đề tương tự như B, và A là trước khi B theo thứ tự chương trình, hoặc
- một Đồng bộ -với B hoặc
- Điều xảy ra trước khi một số hoạt động C khác và C xảy ra trước B
OK. Nếu chúng ta xem ví dụ này
thread0 thực hiện | thread1 thực hiện
lưu trữ x (phát hành) | tải x (có được)
lưu trữ ở đây x đồng bộ hóa với tải từ x? Nếu chúng ta có mối quan hệ đồng bộ hóa ở đây, thì lưu trữ thành x xảy ra trước khi tải từ x, vì vậy mọi thứ được sắp xếp trước khi lưu trữ thành x trong chuỗi 0 xảy ra trước khi tải từ x trong chuỗi 1. Nó có nghĩa là có lệnh bắt buộc tại đây. Đúng không? Nhưng trong trường hợp này tôi không hiểu cái gì "và B đọc giá trị được lưu trữ bởi A" một phần của định nghĩa nghĩa là gì? Nếu thread 1 nhanh hơn thì thread 0 nó có thể đọc giá trị cũ. Vậy mối quan hệ ở đây là gì và có mối quan hệ nào không? Nếu không có, làm thế nào tôi có thể cung cấp mối quan hệ đó?
Xin cảm ơn trước.
bài viết tuyệt vời ở đây http://preshing.com/20130823/the-synchronizes-with-relation/ – camino