Bài toán producer
và consumer
là một bài toán quen thuộc và thường được sử dụng trong nhiều chương trình. Trong Rust khi nghĩ đến điều này khái niệm channel trong thư viện tokio
và sử dụng tokio::mspc
để thực hiện như một channel
queue
. Producer
sử dụng hàm send
để gửi một giá trị vào channel
này và consumer dùng hàm recv
để lấy ra.
Nhưng bây giờ, giả sử vì lý do gì đó chúng ta không thể sử dụng mspc
này và phải tự viết một đoạn mã với cơ chế giống như thế. Nghĩa là chúng ta sẽ phải đẩy dữ liệu vào queue từ producer
và lấy ra bởi consumer
. Liệu cách làm nên là như nào ?
Bạn sẽ nghĩ rằng việc này có gì đâu ? Cứ đẩy vào rồi lấy rồi check choắc kích thước queue thôi mà ? Chúng ta sẽ cùng phân tích
Đây là một trong năm bài bài toán mình làm khi đầu vào Elcom
ngày xưa nhưng viết trên C++.Khi học sang Rust, mình đoán nó sẽ cơ chế tương tự.