为什么sem_t在64位linux中是32个字节?

时间:2012-10-10 05:46:37

标签: linux semaphore glibc futex posix-api

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

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

仅仅因为我的兴奋,我不打算在工作中使用自定义信号量。

1 个答案:

答案 0 :(得分:2)

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

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