Tôi có một ứng dụng một quy trình, hai luồng. Chủ đề 1 sẽ lắng nghe nguồn cấp dữ liệu thị trường và cập nhật báo giá mới nhất về hàng nghìn cổ phiếu. Chủ đề 2 sẽ chạy bộ đếm thời gian ở tần số lấy mẫu và chụp nhanh các trích dẫn gần đây nhất để xử lý. Hiệu quả, tôi cần phải xuống mẫu một nguồn cấp dữ liệu thị trường cực nhanh.Cách nhanh, bộ nhớ hiệu quả để truyền dữ liệu giữa các luồng trong C# là gì?
Dự đoán đầu tiên của tôi về giải pháp là sử dụng BlockingQueue. Để thực hiện điều này, tôi cần phải di chuyển chức năng hẹn giờ vào Chủ đề 1, mà tôi có thể thực hiện bằng cách kiểm tra đồng hồ mỗi lần cập nhật báo giá đến và gửi ảnh chụp nhanh các dấu ngoặc kép lên hàng đợi tại Tần số Lấy mẫu. Mối quan tâm của tôi ở đây là hàng đợi sẽ tiêu tốn rất nhiều bộ nhớ và bộ sưu tập rác sẽ làm chậm mọi thứ.
Dự đoán thứ hai của tôi là để Thread 1 sao chép dữ liệu vào một thành viên bị khóa ở tần số lấy mẫu, mà Thread 2 có thể truy cập. Mối quan tâm của tôi ở đây là các ổ khóa sẽ bị chậm.
Thirt của tôi đoán nó làm cho các nguyên tố trích dẫn dễ bay hơi. Vì một luồng chỉ viết và một luồng chỉ đọc, có lẽ điều này là thích hợp?
Có cách nào tốt nhất để truyền đạt dữ liệu giữa các chuỗi cho ứng dụng nhạy cảm độ trễ này không? Đây không phải là một ứng dụng tần số cực cao. Tôi có thể chịu đựng được độ trễ theo thứ tự của hàng chục ms.
Bạn có yêu cầu khóa đọc cả thời gian (đọc/ghi) không? :) –
@AmarPalsapure Cảm ơn, lỗi đánh máy đã được sửa! –
Thx cho câu trả lời của bạn. Tôi sẽ thử khóa để bắt đầu. Bạn nghĩ gì về việc sử dụng dễ bay hơi? –