Tôi đang tìm kiếm một lock-free thiết kế phù hợp với những điều kiện tiên quyết:Looking for a RT-an toàn cấu trúc đơn-reader đơn nhà văn lock-free
- một nhà văn đơn viết thành một cấu trúc và một đọc đơn đọc từ cấu trúc này (cấu trúc này đã tồn tại và an toàn cho đồng thời đọc/ghi)
- nhưng tại một thời gian, cấu trúc cần phải được thay đổi bởi nhà văn, sau đó initialises, công tắc và viết vào một cấu trúc mới (cùng loại nhưng có nội dung mới)
- và vào lần tiếp theo người đọc đọc, nó thiết bị chuyển mạch đến cấu trúc mới này (nếu nhà văn nhân chuyển sang cấu trúc không có khóa mới) các cấu trúc này, bỏ qua dữ liệu của chúng).
- Cấu trúc phải được sử dụng lại, nghĩa là không được cấp phát bộ nhớ heap/miễn phí trong khi hoạt động ghi/đọc/chuyển đổi, cho mục đích RT.
Tôi hiện đã triển khai trình tạo vòng đeo có chứa nhiều phiên bản của các cấu trúc này; nhưng việc triển khai này thực tế là khi người viết đã sử dụng tất cả các cấu trúc có trong ringbuffer, không còn chỗ nào để thay đổi từ cấu trúc ... Nhưng phần còn lại của ringbuffer chứa một số dữ liệu mà không cần phải đọc bởi người đọc nhưng không thể được sử dụng lại bởi nhà văn. Kết quả là, các ringbuffer không phù hợp với mục đích này.
Bất kỳ ý tưởng (tên hoặc giả thực hiện) thiết kế không có khóa? Cảm ơn bạn đã xem xét vấn đề này.
Sự nhấn mạnh quá nhiều không làm nhấn mạnh. – kennytm
@KennyTM: Bạn nói đúng. Đã chỉnh sửa. – moala
Câu hỏi hay. Đây là một vấn đề thường gặp trong các hệ thống thời gian thực. Tôi rất tò mò nếu có cách nào để thực hiện điều này. – thebretness