<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. <include>和<ViewStub>之間的差異android
- 3. <type'generator'>和<type'xrange'之間的差異
- 4. <s:VGroup>和「<s:Group>垂直佈局」之間的差異
- 5. -h <name>與-o <outputfile>之間的差異cc(C++)
- 6. <f:subview>與<ui:composition>標籤之間的差異
- 7. 差異與<beans>之間<beans:beans>
- 8. Spring 3(SWS2):<context:component-scan>和<sws:annotation-driven>之間的差異
- 9. LINQ中FirstOrDefault()和FirstOrDefault之間的差異<string>()LINQ
- 10. 訂閱和訂閱者之間的差異<T> angular2
- 11. 什麼是貓文件和貓之間的差異<文件
- 12. 是否有「=」和「< - 」之間的技術差異
- 13. ByteArray和數組之間的差異<Byte> in kotlin
- 14. 渲染html.RenderPartial之間的差異和<%@寄存器
- 15. DictionaryBase和Dictionary之間的差異<Tkey,Tvalue>
- 16. 差異<?>
- 17. SQL之間的差異在運算符和「> =」&「<=」運算符之間
- 18. 是什麼返回類型ResponseEntity <?>和ResponseEntity <Object>和ResponseEntity之間的差異<MyCustomClass>
- 19. 條件註釋之間的差異<! - [如果LT IE 9]>和<! - [如果LTE IE 8]>
- 20. 差異</script>
- 21. <?php和<?之間的區別
- 22. Ruby中+和<<之間的區別
- 23. VBA:&和+之間的差異
- 24. 之間的差異和::: ++
- 25. 有什麼不同 「<% %>」 項目之間的差異
- 26. 是什麼之間的差<按鈕的onclick = ...>和<a href="#" onclick=.../>
- 27. Scala中的「for(elm < - myList)yield f(_)」和「myList map f(_)」之間的差異
- 28. t <'a>和F#中的一個t之間的任何差異?
- 29. PHP:差異之間 - >和::
- 30. NHibernate的差異,獲取<T>和負載<T>