Khi sử dụng bộ nhớ dùng chung để xem xét các điều kiện chủng tộc có thể xảy ra khi một quy trình ghi vào đó và một quy trình khác đọc từ đó, điều cần lưu ý. Có một nguy cơ liên quan đến việc sử dụng trước đây, giả sử hai quá trình đang sử dụng nó, một để viết cho nó, một để đọc từ nó, một trong đó là viết chết do điều kiện bất thường, quá trình đọc nó có thể treo hoặc sụp đổ.
Bộ nhớ chia sẻ có thể được coi là nhanh hơn (chi phí thấp, khối lượng lớn dữ liệu được truyền) sau đó xếp hàng. Nhưng hàng đợi, mặt khác, đòi hỏi chi phí cao (thiết lập để thực hiện một hàng đợi để được vĩnh viễn vv) với khối lượng dữ liệu thấp.
Onus có bộ nhớ dùng chung là bạn phải triển khai đồng bộ hóa để làm chủ đề an toàn. Hãy xem bài viết tuyệt vời của Beej trên IPC.
Khi sử dụng Hàng đợi, chúng an toàn và không đơn độc, thư được giữ trong hàng đợi bất kể kết quả, giả sử hai quy trình đang sử dụng hàng đợi, khi một quá trình ghi vào hàng đợi (theo dạng tin nhắn) và quá trình khác sắp đọc từ nó bị chết hoặc bị chết do tai nạn hoặc tình trạng bất thường trong một hoàn cảnh như vậy, thông điệp đó vẫn còn đúng chỗ, quá trình khác nếu khởi động lại có thể đọc từ hàng đợi, tức là không có dữ liệu bị mất.
Đó là sự khác biệt giữa hai loại.
Hy vọng điều này sẽ giúp, Trân trọng, Tom.
Duplicate http://stackoverflow.com/questions/2275909/whats-the-advantage-of-queues-over-pipes-when-communicating-between-processes/2276157#2276157 – t0mm13b
Không bị lừa. Một là về ống, một là về shm. – kennytm