2012-06-15 38 views

Trả lời

14

<sys/sem.h> cung cấp giao diện cho các ẩn dụ XSI (nguyên bản hệ thống Unix). Đây không phải là một phần của tiêu chuẩn POSIX cơ sở (trong tùy chọn XSI phần lớn cho khả năng tương thích Unix truyền thống) và trong khi chúng không bị coi là lỗi thời/không được chấp nhận, nhiều lập trình viên coi chúng không được dùng nữa và POSIX khuyên:

ỨNG DỤNG ÁP DỤNG

Tiện ích mở rộng thời gian thực POSIX xác định các giao diện thay thế cho giao tiếp liên tiến trình. Các nhà phát triển ứng dụng cần sử dụng IPC nên thiết kế các ứng dụng của họ để các mô-đun sử dụng các thói quen IPC được mô tả trong Giao tiếp Interprocess XSI có thể dễ dàng sửa đổi để sử dụng các giao diện thay thế.

Những lợi thế và bất lợi của các ẩn dụ XSI là chúng là và phải do cách thức giao diện của chúng hoạt động, đối tượng không gian hạt nhân. Lợi ích chính mà điều này mang lại cho bạn là khả năng thiết lập chúng để hạt nhân có thể hoạt động trở lại nếu quá trình thoát ra hoặc bị giết bất ngờ. Chi phí chính là mọi hoạt động là một chuyến đi khứ hồi tới không gian hạt nhân, tức là chúng hoạt động rất chậm. Các giao diện sử dụng chúng cũng rất khó hiểu và khó học, và chúng nhất thiết là một tài nguyên chia sẻ quy trình, nghĩa là bạn phải đối phó với một không gian tên được chia sẻ và các vấn đề về dọn dẹp tài nguyên.

<semaphore.h> định nghĩa các semaphores POSIX, được thiết kế theo cách chúng có thể được triển khai hoàn toàn trong không gian người dùng, ngoại trừ trường hợp có quy trình sẽ gọi vào hạt nhân để chuyển sang chế độ ngủ. Hiệu suất của chúng phải gần như tối ưu (tức là gần như không thể đánh bại được bản thân bạn) nhưng chúng không hoàn toàn giống như các semaphores XSI. Các semaphores POSIX cũng cung cấp cho bạn sự lựa chọn cho dù bạn muốn một semaphore quá trình cục bộ (để sử dụng trong môi trường đa luồng hay thậm chí trong một số điều kiện, một trình xử lý tín hiệu trong một chương trình một luồng) và trong trường hợp thứ hai, bạn cũng có sự lựa chọn cho phép hệ thống xử lý phân bổ nó trong một không gian tên chia sẻ theo tên, hoặc để có được bộ nhớ chia sẻ cho mình và khởi tạo nó trong bộ nhớ chia sẻ.

4

Chúng không giống nhau/thay thế cho nhau nhưng hai triển khai khác nhau và cung cấp các chức năng khác nhau. semaphore.h là triển khai posix và sys/sem.h là việc triển khai sysV. POSIX là considered để được bật lửa và sử dụng rộng rãi.

Các vấn đề liên quan