2012-05-02 45 views
14

Lý do tại sao is_lock_free yêu cầu một cá thể (đó là một hàm thành viên)? Tại sao không phải là một sự thay đổi của loại, hoặc một hàm thành viên tĩnh constexpr?Tại sao is_lock_free có chức năng thành viên?

Tôi đang tìm kiếm một ví dụ thực tế về lý do tại sao nó là cần thiết.

+0

Tên có phải là 'is_instance_free' không? Số QED. –

+6

Có vẻ như đó là do hiệu suất [trích dẫn từ đây] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html): 'Đề xuất cung cấp không có khóa các hàm truy vấn trên các đối tượng riêng lẻ chứ không phải toàn bộ các loại cho phép biến không thể tránh khỏi các biến nguyên tử mà không làm giảm hiệu suất của các biến nguyên tử liên kết ” –

+2

@JesseGood nghe giống như một câu trả lời. Tại sao nó là một bình luận? ;) –

Trả lời

23

Chuẩn cho phép loại là đôi khi không có khóa.

phần 29,4 Khóa miễn phí sở hữu

Các ATOMIC _..._ macro LOCK_FREE chỉ ra tài sản lock-free của loại nguyên tử tương ứng, với chữ ký và unsigned biến nhóm lại với nhau. Các thuộc tính cũng áp dụng cho các chuyên ngành tương ứng (một phần) của mẫu nguyên tử. Giá trị 0 cho biết các loại không bao giờ không khóa. Giá trị 1 cho biết rằng các loại này đôi khi không có khóa. Giá trị 2 cho biết rằng các loại luôn không có khóa.

Các C++ atomic paper n2427 bang lý do đằng sau:

... đề nghị cung cấp thời gian chạy lock-free chức năng truy vấn thay hơn thời gian biên dịch hằng vì triển khai tiếp theo của một nền tảng có thể nâng cấp khóa hoạt động với các hoạt động không có khóa, do đó, nó là phổ biến cho các hệ thống để trừu tượng các cơ sở như vậy sau thư viện động và chúng tôi muốn để khả năng mở đó khả dụng. Hơn nữa, chúng tôi khuyên bạn nên triển khai mà không cần sử dụng hỗ trợ nguyên tử phần cứng kỹ thuật đó. ...

Và cũng (như Jesse Good chỉ ra):

Đề nghị cung cấp các chức năng truy vấn lock-free trên các đối tượng cá nhân chứ không phải là loại toàn bộ cho phép các biến nguyên tử không thể tránh khỏi lệch mà không xử phạt thực hiện các biến nguyên tử được căn chỉnh

+0

Tôi đã thêm vào trong báo giá khác cho tính đầy đủ. – Pubby

+0

Chắc chắn. Phần đó cũng liên quan đến câu hỏi của bạn. Tôi bỏ lỡ điều đó. – user2k5

+0

Tôi cũng có thể tưởng tượng một thực hiện với một số cố định của các giá trị nguyên tử hoặc somesuch. – Yakk

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