首页 > 其他分享 ><semaphore.h> 和 <sys/sem.h> 的区别

<semaphore.h> 和 <sys/sem.h> 的区别

时间:2022-10-27 10:00:29浏览次数:51  
标签:它们 区别 接口 信号量 POSIX 进程 XSI

<sys/sem.h>为 XSI(最初是 Unix System V)信号量提供接口。 这些不是基本 POSIX 标准的一部分(它们在 XSI 选项中,主要是为了传统的 Unix 兼容性),虽然它们还没有被认为是过时的/弃用的,但许多程序员认为它们已弃用,POSIX 建议:

应用程序使用

POSIX 实时扩展定义了用于进程间通信的替代接口。 需要使用 IPC 的应用程序开发人员应该设计他们的应用程序,以便可以轻松修改使用 XSI 进程间通信中描述的 IPC 例程的模块以使用替代接口。

XSI 信号量的优点和缺点在于它们是,并且必须由于它们的接口工作方式,内核空间对象。 这给您带来的主要好处是能够设置它们,以便在进程退出或意外终止时内核可以退出操作。 主要成本是每个操作都是到内核空间的往返,即它们非常慢。 使用它们的接口也非常晦涩难学,而且它们必然是进程共享资源,这意味着您必须处理共享命名空间和资源清理问题。

<semaphore.h>定义了 POSIX 信号量,它们的设计方式使得它们可以完全在用户空间中实现,除非在有争议的情况下,进程将调用内核进入睡眠状态。 它们的性能应该接近最佳(即几乎不可能击败您自己的),但它们的功能不如 XSI 信号量。 POSIX 信号量还为您提供了选择是否需要进程本地信号量(用于多线程环境,甚至在某些情况下,单线程程序中的信号处理程序)或进程共享信号量,在后一种情况下,您还可以选择是让系统按名称在共享命名空间中分配它,还是自己获取共享内存并在共享内存中初始化它。

它们彼此不同/替代,而是两种不同的实现并提供不同的功能集。 semaphore.h是posix实现和 sys/sem.h是 sysV 的实现。 POSIX 被 认为 更轻量级并被广泛使用。

标签:它们,区别,接口,信号量,POSIX,进程,XSI
From: https://www.cnblogs.com/const-zpc/p/16831125.html

相关文章

  • dependencies与dependencyManagement的区别
    dependencies与dependencyManagement的区别在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显......
  • GET和POST两种基本请求方法的区别
    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过requestbody传递参数。 你可能......
  • TCP与UDP的区别
    引言网络协议是每个前端工程师都必须要掌握的知识,TCP/IP中有两个具有代表性的传输层协议,分别是TCP和UDP,本文将介绍下这两者以及它们之间的区别。一、TCP/IP网络模型......
  • Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系
    在我们日常的开发中,我们经常会用到Filter和Interceptor。有时同一个功能。Filter可以做,Interceptor也可以做。有时就需要考虑使用哪一个比较好。这篇文章主要介绍一下,二者......
  • Unix路径化简(注意.和..的区别)
    题目描述简化Unix风格的路径,需要考虑的包括"/../","//","/./"等情况输入描述:Unix风格的路径输出描述:简化后的Unix风格路径示例1输入复制/a/./b/../../c/输......
  • vue2与vue3的区别
    1、vue使用的是object.defineProperty,vue3使用的是proxy+reflect2、Object.defineProperty(vue2)一次只能监视一个属性,如果要监视一个对象,那么需要遍历这个对象但proxy+......
  • 墨门云文件加密系统-透明加密和半透明加密的区别
    ​墨门云加密文件加密系统,运行在Ring0模式(内核模式),具备系统特权级权限,可以支持高性能源代码、图纸文件、各种文档文件的高性能透明加解密。什么是透明加解密?当使用者在打开......
  • 前端绘图方式Canvas和SVG的区别
    前端绘图方式Canvas和SVG的区别Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片。下面来介绍和分析一下他们。一.Canvas和SVG简介1.什么是......
  • yarn和npm的区别
    熟悉一个新项目一般都是如下步骤:gitclonexxxnpminstallnpmrundev或者gitclonexxxyarnyarnstartyarn是什么?yarn是由Facebook、Google、Exponent和Tilde联合推......
  • Java当中的重载和重写的区别【多测师】
    java中重写与重载的区别1.重写(Override)从字面上看,重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不......