Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 19 мар 2019, 04:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Фьютекс
Непрочитанное сообщениеДобавлено: 06 июл 2017, 10:24 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11633
Откуда: Харьков
Очень интересная тема, почти не описанная в литературе.
Это быстрые блокировки в пользовательском пространстве... взамен (в некотором смысле) мютексов и семафоров.
Впервые на этом форуме этот механизм вылез в обсуждениях Помогите научиться устанавливать программы из исходного кода.
Это не POSIX механизм, а специфический для Linux:
Код:
man 7 futex
futex - fast user-space locking
...

Код:
man 2 futex
SYNOPSIS
       #include <linux/futex.h>
       #include <sys/time.h>

       int futex(int *uaddr, int op, int val, const struct timespec *timeout,
                 int *uaddr2, int val3);
       Note: There is no glibc wrapper for this system call; see NOTES.
...
CONFORMING TO
       This system call is Linux-specific.
...

Очень большой, и даже ажиотажный шум, вокруг фьютексов возник в публикациях и конференциях (англоязычных) около 2002 года.
Особо расширился этот механизм начиная с ядра 2.6.22-2.6.28.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Фьютекс
Непрочитанное сообщениеДобавлено: 06 июл 2017, 12:19 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11633
Откуда: Харьков
Olej писал(а):
Очень большой, и даже ажиотажный шум, вокруг фьютексов возник в публикациях и конференциях (англоязычных) около 2002 года.
Особо расширился этот механизм начиная с ядра 2.6.22-2.6.28.

Очень подробное описание механизма фьютексов на русском языке можно читать здесь: быстрая блокировка в пользовательском пространстве
Цитата:
В glibc нет обёртки для данного системного вызова; запускайте его с помощью syscall(2).

Там же есть полный законченный пример взаимодействия 2-х процессов (что существенно сложнее чем потоков):
Цитата:
В программе, показанной далее, показано использование фьютексов: родительский и дочерний процессы используют пару фьютексов, расположенных в общем анонимном отображении, для синхронизации доступа к общему ресурсу: терминалу. Каждый из процессов записывает nloops (аргумент командной строки, если отсутствует, то 5) сообщений на терминал и использует протокол синхронизации, который гарантирует, что они записываются поочерёдно. Результат работы программы:


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.097s | 17 Queries | GZIP : On ]