Механизм блокировки на основе Futex - PullRequest
2 голосов
/ 24 сентября 2010

Кто-нибудь может рассказать мне пример использования механизма блокировки на основе futex? (для muticore x86 CPU, CentOS)

Ответы [ 3 ]

2 голосов
/ 24 сентября 2010

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

0 голосов
/ 13 декабря 2013

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

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

http://meta -meta.blogspot.com / 2010/11 / Linux-Threading примитивы-futex.html https://github.com/lcapaldo/futexexamples

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

0 голосов
/ 10 декабря 2012

Посмотрите на https://github.com/avsm/ipc-bench. Они используют futex в реализации канала с общей памятью.

В частности, вы можете проверить этот код .

...