2010-09-24 3 views

ответ

3

Мьютексы Pthreads реализованы с использованием futexes в последних версиях Linux. Pthreads является стандартным API-интерфейсом C для потоковой передачи данных в Linux и является частью стандарта Posix, поэтому вы можете легко переносить свою программу на другие Unix-подобные системы. Вы должны избегать использования futexes напрямую, если у вас нет очень необычных потребностей, потому что их очень сложно использовать правильно - используйте pthreads или API-интерфейс более высокого уровня, специфичный для языка (который почти наверняка будет использовать сами pthreads).

+0

Что относительно последней версии CentOS 5.5? Мутетексы Pthreads на CentOS 5.5 реализованы с использованием futexes? Спасибо – Dima

+0

Futexes были использованы pthreads во всех дистрибутивах Linux начиная с 2004 года, когда были приняты ядра серии 2.6. Это включает CentOS. Я не понимаю, почему вам нужно беспокоиться о них, хотя ... они в значительной степени являются деталями реализации. – Doug

+0

, потому что мне нужно использовать блокировки в очень критическом для времени пути к серверному приложению (место, где все данные прошли). Я думаю, что лучше использовать какой-то «быстрый» механизм блокировки ... – Dima

-1

рабочий пример: mutex pthreads использовать блокировки futex.

Пример кода: они были сделаны в течение нескольких месяцев после этого сообщения в 10-м году, но все еще актуальны.

http://meta-meta.blogspot.com/2010/11/linux-threading-primitives-futex.html https://github.com/lcapaldo/futexexamples

случай использования Пример: МПК и синхронизация между процессами являются единственным примером того, почему следует использовать futex в пользовательском пространстве. Мьютексы pthread будут работать для нескольких потоков, за исключением крайних случаев, но в многопроцессном режиме отсутствуют механизмы блокировки высокой производительности, а также блокировки.

Смежные вопросы