3

64ビットLinuxのsem_tは32バイトですが、futex実装では8バイトで十分です( glibc sem_post )、それは本当ですか? それが本当なら、なぜバイトを無駄にするのですか?

実際には、8 バイトのみを使用するカスタム セマフォ実装を使用したいので、1 つのセマフォを 1 つの日付エントリに使用することが可能です。しかし、glibc の実装の他のバイトが単なるパディングであるかどうかはよくわかりません。

念のために言っておきますが、私は仕事でカスタム セマフォを使用するつもりはありません。

4

1 に答える 1

2

AFAIKglibcは、異なる Linux カーネルと異なるスレッド モジュール間で移植可能である必要があります。したがって、他のシステムが簿記のために余分なスペースを必要とする場合に備えて、構造体用に 32 バイトのスペース (4 マシンワード) を予約します。

futex で独自のことをしたい場合は、すぐに行ってください。あなたが言うように、futexでそれを行うには8バイトしか必要ありません。

于 2012-10-10T06:08:09.853 に答える