Cả hai đều có các công cụ cơ bản giống nhau - semaphores, bộ nhớ dùng chung và hàng đợi tin nhắn. Họ cung cấp một giao diện hơi khác với những công cụ đó, nhưng các khái niệm cơ bản là giống nhau. Một điểm khác biệt đáng chú ý là POSIX cung cấp một số tính năng thông báo cho hàng đợi tin nhắn mà Sys V không có. (Xem mq_notify()
.)
Sys V IPC đã tồn tại lâu hơn và có một vài ý nghĩa thiết thực -
Đầu tiên, POSIX IPC ít được triển khai rộng rãi hơn. Tôi đã viết một trình bao bọc Python cho POSIX IPC và tài liệu của nó liệt kê những gì tôi biết về việc triển khai POSIX IPC trên các nền tảng khác nhau .
Trên tất cả các nền tảng được liệt kê trong tài liệu đó, Sys V IPC được triển khai hoàn toàn AFAIK, trong khi bạn có thể thấy POSIX IPC thì không.
Hàm ý thứ hai về độ tuổi tương đối của chúng là POSIX IPC được thiết kế sau khi Sys V IPC đã được sử dụng một thời gian. Do đó, các nhà thiết kế API POSIX đã có thể học hỏi từ những điểm mạnh và điểm yếu của API Sys V. Do đó, API POSIX đơn giản hơn và dễ sử dụng hơn IMO và tôi khuyên bạn nên sử dụng nó trên API Sys V.
Tôi nên lưu ý rằng tôi chưa bao giờ chạy bất kỳ bài kiểm tra hiệu suất nào để so sánh cả hai. Tôi nghĩ rằng API cũ hơn (Sys V) sẽ có nhiều thời gian hơn để điều chỉnh hiệu suất, nhưng đó chỉ là suy đoán, tất nhiên không thể thay thế cho thử nghiệm trong thế giới thực.
Về lý do tại sao có hai tiêu chuẩn - POSIX đã tạo ra tiêu chuẩn của họ vì họ nghĩ rằng đó là một cải tiến trên tiêu chuẩn Sys V. Nhưng nếu mọi người đồng ý rằng POSIX IPC tốt hơn, thì nhiều chương trình vẫn sử dụng Sys V IPC và sẽ mất nhiều năm để chuyển tất cả chúng sang POSIX IPC. Trong thực tế, sẽ không đáng để nỗ lực vì vậy ngay cả khi tất cả mã mới đều sử dụng POSIX IPC kể từ ngày mai, Sys V IPC sẽ tồn tại trong nhiều năm.
Chúng tôi không thể cho bạn biết bạn nên sử dụng cái nào nếu không biết nhiều hơn về những gì bạn định làm, nhưng câu trả lời bạn có ở đây sẽ cung cấp cho bạn đủ thông tin để tự quyết định.