Почему sem_t 32 байта в 64-битной Linux?

sem_t в 64-битном linux составляет 32 байта, но с реализацией futex 8 байтов достаточно ( glibc sem_post), это правда? если это правда, зачем делать это тратить байты?

На самом деле я хочу использовать пользовательскую реализацию семафора, которая использует только 8 байтов, поэтому возможно использование одного семафора для одной записи даты. Но я не совсем уверен, что другие байты в реализации glibc просто заполнены.

Просто для моего интереса, я не собираюсь использовать пользовательский семафор в работе.

1 ответ

Решение

Насколько мне известно glibc должен быть переносимым между различными ядрами Linux и разными модулями потоков. Поэтому он резервирует 32 байта пространства (4 машинных слова) для структуры, в случае, если другим системам требуется дополнительное пространство для бухгалтерии.

Если вы хотите сделать что-то свое с фьютексами, идите вперед; как вы говорите, вам понадобится всего 8 байтов, чтобы сделать это с помощью futex.

Другие вопросы по тегам