为什么在64位Linux中,sem_t的大小为32字节?

3

在64位Linux中,sem_t占用32字节,但是通过futex实现,只需要8字节就足够了(glibc sem_post),这是真的吗?如果是真的,为什么要浪费这些字节呢?

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

只是出于我的兴趣,我不打算在工作中使用自定义信号量。


1
也许是为了给其他人或未来的实现留下位置... 你为什么在意呢??? - Basile Starynkevitch
1个回答

2
据我所知,glibc需要在不同的Linux内核和不同的线程模块之间进行移植。因此,在其他系统需要额外的空间进行簿记时,它为该结构保留了32字节的空间(4个机器字)。如果您想使用futexes自己做一些事情,那么请继续;正如您所说,您只需要8个字节就可以使用futex完成它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接