2012-06-23 53 views

Trả lời

10

Mở khóa một mutex đồng bộ hóa với khóa mutex. Tôi không biết những gì các tùy chọn trình biên dịch có để thực hiện, nhưng bạn sẽ có được tác dụng tương tự của một hàng rào.

+1

Tôi nghĩ OP hỏi về hàng rào cho các vị trí bộ nhớ khác ngoài chính mutex. – Mysticial

+2

Tôi không hiểu. Các hàng rào trong C++ không ảnh hưởng đến các vị trí bộ nhớ cụ thể. –

+5

Tôi đang nói điều này: Giả sử Core A ghi vào 'A [0] 'và sau đó giải phóng mutex. Sau đó, Core B mua lại mutex và đọc 'A [0]' (trước khi cache kết hợp có thể truyền giá trị mới của 'A [0]' tới lõi B.) Nói cách khác, một mutex có buộc tất cả các vị trí bộ nhớ phải lên cập nhật trước khi trở về. – Mysticial

10

Như tôi hiểu điều này được bao phủ trong:

1.10 Multi-ren hành và chủng tộc dữ liệu

Para 5:

Thư viện de fi NES một số hoạt động nguyên tử (Điều 29) và các hoạt động đối với mutexes (Điều 30) được xác định đặc biệt là các hoạt động đồng bộ hóa. Các hoạt động này đóng vai trò đặc biệt trong việc thực hiện các bài tập trong một chuỗi hiển thị với một chuỗi khác. Một hoạt động đồng bộ hóa trên một hoặc nhiều vị trí bộ nhớ là một hoạt động tiêu thụ, một hoạt động có được, một hoạt động phát hành, hoặc cả một hoạt động thu nhận và giải phóng. Một hoạt động đồng bộ hóa không có vị trí bộ nhớ liên quan là một hàng rào và có thể là hàng rào có được, hàng rào phát hành hoặc cả hàng rào và hàng rào phát hành. Ngoài ra, có các hoạt động nguyên tử thoải mái, không phải là các hoạt động đồng bộ hóa và các hoạt động đọc-sửa-ghi nguyên tử, có các đặc điểm đặc biệt. [Lưu ý: Ví dụ, một cuộc gọi mua lại một mutex sẽ thực hiện một hoạt động có được trên các vị trí bao gồm mutex. Tương ứng, một cuộc gọi phát hành cùng một mutex sẽ thực hiện một thao tác phát hành trên cùng một vị trí đó. Một cách không chính thức, thực hiện thao tác giải phóng trên A lực lượng phía trước e ff ects trên các vị trí bộ nhớ khác để hiển thị với các chủ đề khác mà sau này thực hiện một hoạt động tiêu thụ hoặc thu được trên các hoạt động nguyên tử. họ không thể đóng góp cho các cuộc đua dữ liệu. —end note]

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