유닉스 IPC를 배우고 있으며, 책의 msg * 패밀리에 대해서만 이야기합니다. 그러나 맨 페이지를 탐색하면서 mq_에 해당하는 내용을 알게되었습니다. http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/0650/bks/SGI_Developer/books/T_IRIX_Prog/sgi_html/ch06.html은이 둘의 차이점을 설명하지만, 구현에 따라 그 차이가 어느 정도인지는 잘 모르겠습니다. 한 가족을 다른 가족보다 더 많이 사용해야하는 이유가 있습니까? 둘 중 하나가 다른 것보다 "더"좋습니까?msgsnd 또는 mq_send를 사용해야합니까?
답변
mq_*
함수는 POSIX 함수입니다. msg*
기능은 일반적으로 'System V IPC'로 알려져 있습니다 (공유 메모리 및 세마포어가 포함 된 UNIX System V에서 소개 된 IPC 기능의 일부이기 때문에). 나는 msg*
함수가 POSIX과 X/Open 표준에 더 많이 포함되어 있다고 생각하는 것이 적절하다고 생각합니다. 그 (것)들에게 불의를 할지도 모르지만, 표준은 동일한 결과를 달성하는 다수 방법을 피하는 것을 시도한다. 그들은 POSIX의 원래 버전에서 그들 중 누구도 아니었다.
코드를 이식 할 위치를 고려해야합니다. 나는 그들이 사용하는 모든 곳에서 사용할 수 있다면 더 현대적인 mq_*
기능을 사용할 것을 제안 할 것이다. - 나는 그들 자신을 사용하지는 않았지만. 일반적으로 msg*
함수는 공유 메모리 및 세마포어 함수보다 자주 사용되지 않지만이 인터페이스는 POSIX보다 길기 때문에 (10 년 이상) 더 광범위하게 사용할 수 있습니다.
일반적으로 더 넓은 범위의 플랫폼으로 이식 할 수 있어야하므로 POSIX 버전을 사용해보십시오.
주요 차이점은 메시지가 빈 큐에 놓일 때 POSIX 큐에서 신호를 생성하거나 새 스레드를 생성 할 수 있다는 것입니다. 또한 POSIX 대기열은 항상 가장 높은 우선 순위의 가장 오래된 메시지를 반환합니다. SysV 대기열은 지정한 우선 순위의 메시지를 반환 할 수 있습니다.
모두의 주행 거리는 다양하지만 일반적으로 SYSV 나 SysV IPC보다 POSIX 인터페이스가 직관적이고 덜 기발합니다.
- 1. msgsnd : 잘못된 인수
- 2. 메시지 큐 : msgsnd failed : 잘못된 인수
- 3. 상속 또는 구성을 사용해야합니까?
- 4. 포크 또는 스레드를 사용해야합니까?
- 5. CouchDB 또는 SimpleDB를 사용해야합니까?
- 6. AppDomain.CurrentDomain.BaseDirectory 또는 System.Environment.CurrentDirectory를 사용해야합니까?
- 7. ArrayList 또는 IList를 사용해야합니까?
- 8. 값 또는 키를 사용해야합니까?
- 9. em 또는 px를 사용해야합니까?
- 10. TNSNAMES.ORA 또는 tnsnames.ora를 사용해야합니까?
- 11. 리스너 또는 옵저버를 사용해야합니까?
- 12. DataInputStream 또는 BufferedInputStream을 사용해야합니까?
- 13. Pylons 또는 Pyramid를 사용해야합니까?
- 14. int 또는 UInt16을 사용해야합니까?
- 15. PHP 또는 ASP를 사용해야합니까?
- 16. 상속 또는 인터페이스를 사용해야합니까?
- 17. NSOperation 또는 NSRunLoop을 사용해야합니까?
- 18. MonoDroid 또는 Android를 사용해야합니까?
- 19. byte 또는 int를 사용해야합니까?
- 20. WPF 또는 SlimDX를 사용해야합니까?
- 21. MongoDB 또는 CouchDB 또는 다른 것을 사용해야합니까?
- 22. 언제 Indefinite_Hashed_Maps 또는 Hashed_Maps를 사용해야합니까?
- 23. eval() 또는 call_user_func()를 사용해야합니까?
- 24. iOS는 NSMutableArray 또는 NSMutableDictionary를 사용해야합니까?
- 25. mySQL에서 언제 "또는"를 사용해야합니까?
- 26. android view 또는 surfaceView, 사용해야합니까?
- 27. Silverlight에서 Json 또는 Xml을 사용해야합니까?
- 28. Navigator 또는 View State를 사용해야합니까?
- 29. System.out.println() 또는 다른 것을 사용해야합니까?
- 30. BIT (1) 또는 BOOL을 사용해야합니까?
와우, msg * 함수는 POSIX가 아니므로? 내 책은 "POSIX : XSI"메시지 대기열이라고 ... – Steven
다시 브랜딩이라고 생각합니다. ;) – Duck
POSIX에서 - 그들은 POSIX (그들은 POSIX를 pre-date했다.)에서 시작하지 않았다. 그리고 책은 POSIX : XSI라는 레이블을 붙이는 것이 옳습니다. –