Tôi gặp vấn đề với Nhà sản xuất/Người tiêu dùng. Hiện tại tôi đã đơn giản Queue
được bao quanh bởi một lock
.ConcurrentQueue cho phép tôi đợi một nhà sản xuất
Tôi đang cố gắng thay thế bằng thứ gì đó hiệu quả hơn.
Lựa chọn đầu tiên của tôi là sử dụng ConcurrentQueue
, nhưng tôi không thấy làm thế nào để người tiêu dùng của tôi chờ tin nhắn được sản xuất tiếp theo (mà không cần làm Thread.Sleep).
Ngoài ra, tôi muốn có thể xóa toàn bộ hàng đợi nếu kích thước của nó đạt đến một số cụ thể.
Bạn có thể đề xuất một số lớp hoặc triển khai hiện có phù hợp với yêu cầu của tôi không?
Bạn thử [ 'BlockingCollection'] (https://msdn.microsoft.com/en- chúng tôi/thư viện/dd267312% 28v = vs.110% 29.aspx) lớp học? –
Hãy xem [câu hỏi này] (http://stackoverflow.com/questions/34255759/multiple-producers-single-consumer-locking-schema). Mặc dù nó là về nhiều nhà sản xuất, nó sẽ không quan trọng nếu bạn có một nhà sản xuất duy nhất. –
Bạn có thể xây dựng trên _ "để xóa toàn bộ hàng đợi nếu kích thước của nó đạt được ..." _? Đối với các nhu cầu khác, BlockingCollection là lựa chọn lý tưởng. –