2010-05-15 25 views
6

thể trùng lặp:
Is there a production ready lock-free queue or hash implementation in C++Có một thư viện chứa đồng thời cho C++

Tôi đang tìm hiện thực của container lock-free:

  • Queue
  • Ngăn xếp
  • Hash Bản đồ
  • vv ...

Làm thế nào về container chặn:

  • Chặn Queue
  • Chặn stack

Có bất kỳ thư viện tốt ngoài kia? Tôi muốn không viết các cấu trúc dữ liệu này ... Tôi sẽ sử dụng nhiều thứ đã được cộng đồng thử nghiệm.

+1

nếu bạn sử dụng từ "chặn", nó không khóa ... –

+0

@Evan, tôi đã sửa câu hỏi của mình, nhưng cần có cách để tạo hàng đợi chặn không khóa bằng CAS và một cái gì đó như một C++ tương đương ManualResetEvent ... – Kiril

+0

@Link: CAS không thể được sử dụng để thực hiện chặn. Tại tốt nhất, bạn có thể sử dụng spinlocks (mà sẽ là khủng khiếp cho loại điều), nhưng bạn cần sự hỗ trợ của lịch trình (mutex/semaphore/etc) để thực sự chặn. –

Trả lời

4

Hãy xem các lớp chứa của Intel TBB. Tham chiếu cho biết:

Các lớp chứa cho phép nhiều yêu cầu các phương thức nhất định trên cùng một vùng chứa.

3

Herb Sutter đã thực hiện một vài bài viết trong loạt Tương thích hiệu quả trong Tiến sĩ Dobbs Journal. Hai điều có thể bạn sẽ muốn đọc ngay lập tức là:

các rest of the series chắc chắn là đáng để đọc là tốt.

+0

cảm ơn ... Tôi biết rằng có những bài viết mô tả cách viết các thùng chứa này, nhưng tôi muốn sử dụng thư viện đã thử và thử nghiệm hơn là tự viết các thùng chứa. – Kiril

+0

@Lirik: Lý do chính tôi liên kết với họ là vì Herb thực hiện một cuộc thảo luận sâu sắc về cách thức và lý do tại sao nó hoạt động, và những gì cạm bẫy có bằng văn bản. Ông cũng đã hoàn thành, làm việc ví dụ mà tôi đã sao chép và sử dụng nguyên văn với thành công. (Mặc dù họ mong đợi một trình biên dịch tương thích với C++ 0x hoặc một kiểu 'nguyên tử <>' tương đương.) – greyfade