3

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

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

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

4

1 回答 1

2

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

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

于 2012-10-10T06:08:09.853 回答