【问题标题】:why sem_t is 32 bytes in 64bit linux?为什么 sem_t 在 64 位 linux 中是 32 字节?
【发布时间】:2012-09-30 12:46:33
【问题描述】:

sem_t 在 64bit linux 中是 32 字节,但是使用 futex 实现,8 字节就足够了(glibc sem_post),是真的吗?如果是真的,为什么要浪费字节?

实际上我想使用一个只使用 8 字节的自定义信号量实现,因此可以使用一个信号量到一个日期条目。但我不太确定 glibc 实现中的其他字节是否只是填充。

为了我的建议,我不会在工作中使用自定义信号量。

【问题讨论】:

  • 也许可以让位给其他人或未来的实现......你为什么在乎???

标签: linux semaphore glibc futex posix-api


【解决方案1】:

AFAIK glibc 需要可移植到不同的 Linux 内核和不同的线程模块。因此,它为结构保留了 32 字节的空间(4 个机器字),以防其他系统需要额外的空间来记账。

如果你想用 futex 做你自己的事,那就去吧;正如你所说,使用 futex 只需要 8 个字节即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2015-05-31
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多