gpt4 book ai didi

c - 的区别

转载 作者:太空狗 更新时间:2023-10-29 16:46:45 25 4
gpt4 key购买 nike

<semaphore.h> 中包含的函数之间有什么区别?和 <sys/sem.h> ?是否存在使用标题或其他更好的情况?

最佳答案

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

APPLICATION USAGE

The POSIX Realtime Extension defines alternative interfaces for interprocess communication. Application developers who need to use IPC should design their applications so that modules using the IPC routines described in XSI Interprocess Communication can be easily modified to use the alternative interfaces.

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

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

关于c - <semaphore.h> 和 <sys/sem.h> 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11058045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com