Giả sử có hai luồng, giao tiếp bằng cách gửi không đồng bộ các thông điệp dữ liệu cho nhau. Mỗi luồng có một số loại hàng đợi tin nhắn.
Câu hỏi của tôi ở mức rất thấp: Điều gì có thể được dự kiến là cách hiệu quả nhất để quản lý bộ nhớ? Tôi có thể nghĩ ra một số giải pháp:
- Người gửi tạo đối tượng thông qua
new
. Nhận cuộc gọidelete
. - Tập hợp bộ nhớ (để chuyển bộ nhớ trở lại cho người gửi)
- Thu gom rác (ví dụ: Boehm GC)
- (nếu các đối tượng đủ nhỏ) sao chép theo giá trị để tránh phân bổ heap hoàn toàn
1) là giải pháp rõ ràng nhất, vì vậy tôi sẽ sử dụng nó cho một nguyên mẫu. Rất có thể là nó đã đủ tốt rồi. Nhưng độc lập với vấn đề cụ thể của tôi, tôi tự hỏi kỹ thuật nào hứa hẹn nhất nếu bạn đang tối ưu hóa cho hiệu suất.
Tôi hy vọng việc gộp chung về mặt lý thuyết là tốt nhất, đặc biệt là vì bạn có thể sử dụng kiến thức bổ sung về luồng thông tin giữa các luồng. Tuy nhiên, tôi sợ rằng đó cũng là điều khó khăn nhất để có được quyền. Rất nhiều điều chỉnh ... :-(
Việc thu gom rác phải khá dễ dàng để thêm vào sau đó (sau giải pháp 1) và tôi hy vọng nó sẽ hoạt động rất tốt. Vì vậy, tôi đoán rằng đó là giải pháp thiết thực nhất nếu 1) hóa ra quá kém hiệu quả.
Nếu các đối tượng nhỏ và đơn giản, sao chép theo giá trị có thể là nhanh nhất. Tuy nhiên, tôi sợ rằng nó buộc các hạn chế không cần thiết trong việc thực hiện các tin nhắn được hỗ trợ, vì vậy tôi muốn tránh nó.