<semaphore.h>
和<sys/sem.h>
中包含的功能有什麼區別? 確實存在使用標題或其他標題更好的情況嗎?<semaphore.h>和<sys/sem.h>之間的差異
8
A
回答
14
<sys/sem.h>
爲XSI(原來的Unix系統V)信號量提供了接口。這些不是基本POSIX標準的一部分(它們在XSI選項中主要用於傳統的Unix兼容性),雖然它們不被認爲是過時/不贊成,但許多程序員認爲它們已被廢棄,POSIX建議:
應用使用
POSIX實時擴展定義進程間通信的替代接口。需要使用IPC的應用程序開發人員應該設計他們的應用程序,以便使用XSI進程間通信中描述的IPC例程的模塊可以很容易地修改爲使用替代接口。
XSI信號量的優點和缺點是,它們是並且必須是由於它們的接口工作的方式,內核空間對象。這給你的主要好處是能夠設置它們,以便在進程退出或意外終止時內核可以退出操作。主要的代價是每個操作都是往返於內核空間的往返行程,即它們非常緩慢。使用它們的界面也非常呆板而且很難學,它們必然是一個流程共享資源,這意味着您必須處理共享名稱空間和資源清理問題。
<semaphore.h>
定義了POSIX信號量,它們的設計方式可以完全在用戶空間中實現,除非進程調用內核進入休眠狀態的競爭情況除外。他們的表現應該接近最佳(即幾乎不可能打敗你自己),但它們不如XSI信號量那樣有特色。 POSIX信號量還爲您提供是否需要進程本地信號量(用於多線程環境,甚至在某些情況下,單線程程序中的信號處理程序)還是進程共享信號量的選擇,在後一種情況下,您還可以選擇是讓系統按名稱將其分配到共享名稱空間中,還是自己獲取共享內存並將其初始化到共享內存中。
4
它們不是相同/彼此替換,而是兩個不同的實現並提供不同的功能集。 semaphore.h
是posix實現,sys/sem.h
是sysV的實現。 POSIX是considered更輕,並廣泛使用。
相關問題
- 1. 差之間<%:和<%=
- 2. <type'generator'>和<type'xrange'之間的差異
- 3. <include>和<ViewStub>之間的差異android
- 4. <s:VGroup>和「<s:Group>垂直佈局」之間的差異
- 5. 差異<>和=
- 6. <f:subview>與<ui:composition>標籤之間的差異
- 7. -h <name>與-o <outputfile>之間的差異cc(C++)
- 8. 差異<< a_value
- 9. 差異與<beans>之間<beans:beans>
- 10. Spring 3(SWS2):<context:component-scan>和<sws:annotation-driven>之間的差異
- 11. 什麼是貓文件和貓之間的差異<文件
- 12. 是否有「=」和「< - 」之間的技術差異
- 13. 渲染html.RenderPartial之間的差異和<%@寄存器
- 14. ByteArray和數組之間的差異<Byte> in kotlin
- 15. LINQ中FirstOrDefault()和FirstOrDefault之間的差異<string>()LINQ
- 16. 之間有什麼MySQL的差異=和<>
- 17. [Import]和_container.GetExportedValue <>()之間的任何差異?
- 18. 訂閱和訂閱者之間的差異<T> angular2
- 19. DictionaryBase和Dictionary之間的差異<Tkey,Tvalue>
- 20. 差異<?>
- 21. SQL之間的差異在運算符和「> =」&「<=」運算符之間
- 22. @using和<%使用差異
- 23. >和<差異猛砸
- 24. 是什麼返回類型ResponseEntity <?>和ResponseEntity <Object>和ResponseEntity之間的差異<MyCustomClass>
- 25. 條件註釋之間的差異<! - [如果LT IE 9]>和<! - [如果LTE IE 8]>
- 26. 差異</script>
- 27. quartz_jobs.xml中<group>元素與<job-group>元素之間的差異
- 28. Rails:<%=和<%==之間的區別?
- 29. <?php和<?之間的區別
- 30. Ruby中+和<<之間的區別