Là semaphore một cơ chế IPC?Là semaphore một cơ chế IPC?
Trả lời
Nó phụ thuộc vào hệ điều hành
Trong Windows có tên Cột có thể được truy cập giữa các quá trình sử dụng CreateSemaphore() và OpenSemaphore() chức năng
http://msdn.microsoft.com/en-us/library/ms682438%28VS.85%29.aspx
Vâng, dưới nhiều nền tảng Cột có thể đồng bộ hóa qua các quy trình. Bạn sẽ sử dụng các semaphores "có tên" cho việc này - nhiều tiến trình truy cập đối tượng thông qua một tên, tương tự như các đối tượng hệ thống tập tin.
Trong POSIX, bạn có thể tạo các semaphores có tên qua sem_open()
. Đối với các ẩn dụ chưa được đặt tên, nếu tham số thứ hai là sem_init()
là không đồng bộ, nó có thể là interprocess, mặc dù tôi không chắc chắn chính xác cách một semaphore interprocess chưa được đặt tên được cho là hoạt động.
Lưu ý rằng trên một số hệ thống, các chức năng này có thể bị lỗi với ENOSYS
nếu các semaphor interprocess không được hỗ trợ (ví dụ OpenBSD).
Trong Windows, bạn có thể tạo các semaphores có tên qua CreateSemaphore()
như @sergiom đã đề cập.
Các ẩn dụ POSIX có thể không được đặt tên hoặc được đặt tên. Các ẩn dụ chưa được đặt tên là được cấp phát trong bộ nhớ xử lý và được khởi tạo . Các ẩn dụ không được đặt tên có thể có thể sử dụng được bằng nhiều quá trình, tùy thuộc vào cách semaphore được phân bổ và khởi tạo như thế nào . [...]
Bạn có muốn biết more không?
Trên thực tế Semaphore là một công cụ đồng bộ hóa nhưng nó được tính là một IPC bcoz nó được truy cập bởi hơn 1 quá trình
IPC có ba sử dụng khác nhau như dữ liệu trao đổi (hàng đợi thông điệp, PIPE, FIFO), đồng bộ hóa (tập tin ổ khóa, semaphore, MUTEX) và tín hiệu.
- 1. Lựa chọn IPC Linux?
- 2. Có cơ chế mutex/semaphore nào trong các kịch bản lệnh shell không?
- 3. Gửi một dict hiện qua zmq ipc
- 4. PHP Semaphore thay thế?
- 5. WaitHandle.WaitAny và Semaphore lớp
- 6. Semaphore và đồng bộ hóa
- 7. pthread_cond_wait so với semaphore
- 8. fast-ish python/jython IPC?
- 9. Sử dụng mutex làm semaphore?
- 10. Cách hoạt động của semaphore?
- 11. php semaphore không hoạt động
- 12. cơ chế của sizeof() trong C/C++ là gì?
- 13. Mutex và semaphore thực sự làm gì?
- 14. Tốc độ IPC và so sánh
- 15. Tại sao IPC :: Open3 bị bế tắc?
- 16. IPC nào hiệu quả hơn ở đây?
- 17. Những hạn chế của cơ giới hóa là gì? và sự khác biệt giữa cơ chế hóa và watir
- 18. Làm cách nào để sử dụng cơ sở dữ liệu để quản lý semaphore?
- 19. Semaphore thread throttling với async/await
- 20. Java Posix IPC Có API không?
- 21. Giao tiếp (IPC) giữa C++ với Python
- 22. Javascript semaphore/test-and-set/lock?
- 23. Hàng đợi giống như semaphore trong javascript?
- 24. Thứ tự semaphore được đảm bảo?
- 25. chính sách và cơ chế
- 26. Cài đặt công bằng trong lớp semaphore
- 27. Thực hiện một tập tin di động khóa cơ chế
- 28. Phương pháp ưa thích cho TCP/IP IPC trong Python không gấp bội là gì?
- 29. Cơ chế Python + mã GAEpython
- 30. nghi ngờ đồng bộ Vs Semaphore
Kể từ phiên bản 5.4 (tháng 11 năm 2013) OpenBSD có [tên semaphores] (http://www.openbsd.org/cgi-bin/man.cgi?query=sem_open&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format= html). Xem [bài đăng trên blog này] (http://www.tedunangst.com/flak/post/sem-open-named-semaphores) – user454322
Re: "Tôi không chắc chắn chính xác cách một semaphore interprocess chưa được đặt tên được cho là hoạt động": Bạn có thể đặt semaphore trong bộ nhớ chia sẻ. Ngoài ra, nếu bạn tạo một semaphore interprocess không tên trong bộ nhớ bình thường và sau đó gọi 'fork()', bạn đã có IPC giữa các tiến trình cha và con. Trong mọi trường hợp, tất nhiên, là một semaphore vô danh có thể khám phá theo cách mà một semaphore được đặt tên là. Nhưng bạn thường chỉ cần một semaphore nếu có một số mối quan hệ khác giữa các quá trình, anyway. – ruakh