Почему sem_t 32 байта в 64-битной Linux?
sem_t в 64-битном linux составляет 32 байта, но с реализацией futex 8 байтов достаточно ( glibc sem_post), это правда? если это правда, зачем делать это тратить байты?
На самом деле я хочу использовать пользовательскую реализацию семафора, которая использует только 8 байтов, поэтому возможно использование одного семафора для одной записи даты. Но я не совсем уверен, что другие байты в реализации glibc просто заполнены.
Просто для моего интереса, я не собираюсь использовать пользовательский семафор в работе.
1 ответ
Насколько мне известно glibc
должен быть переносимым между различными ядрами Linux и разными модулями потоков. Поэтому он резервирует 32 байта пространства (4 машинных слова) для структуры, в случае, если другим системам требуется дополнительное пространство для бухгалтерии.
Если вы хотите сделать что-то свое с фьютексами, идите вперед; как вы говорите, вам понадобится всего 8 байтов, чтобы сделать это с помощью futex.