Сообщение Re[5]: C++11: Синхронизация - Условные переменные и ложные п от 28.03.2019 7:47
Изменено 28.03.2019 7:48 kotalex
Re[5]: C++11: Синхронизация - Условные переменные и ложные п
Здравствуйте, watchmaker, Вы писали:
W>Здравствуйте, kotalex, Вы писали:
K>>Да, есть такая функция, которая используется во всех операциях обхода бакета. Можно ссылку на код, который используется именно для отфильтровывания "коллизийных" фьютексов, а не для поиска нужного бакета по ключу ?
W>В ядре linux работа с futex не размазана по куче исходников, а вполне компактно содержится почти целиком в единственном файле. На который уже привёл ссылку в предыдущем сообщении. Пропустил? Ну вот ещё раз: match_futex
W>А вот чуть ниже в этом же файле пример её целевого использования: https://github.com/torvalds/linux/blob/9e98c678c2d6ae3a17cb2de55d17f69dddaa231b/kernel/futex.c#L1602-L1616
W>Там неоднократно встречается шаблон из последовательности вызовов:
W>Везде результаты plist_for_each_entry* отфильтровываются через match_futex.
Здравствуйте, watchmaker, Вы писали:
W>Здравствуйте, kotalex, Вы писали:
K>>Да, есть такая функция, которая используется во всех операциях обхода бакета. Можно ссылку на код, который используется именно для отфильтровывания "коллизийных" фьютексов, а не для поиска нужного бакета по ключу ?
W>В ядре linux работа с futex не размазана по куче исходников, а вполне компактно содержится почти целиком в единственном файле. На который уже привёл ссылку в предыдущем сообщении. Пропустил? Ну вот ещё раз: match_futex
W>А вот чуть ниже в этом же файле пример её целевого использования: https://github.com/torvalds/linux/blob/9e98c678c2d6ae3a17cb2de55d17f69dddaa231b/kernel/futex.c#L1602-L1616
W>Там неоднократно встречается шаблон из последовательности вызовов:
W>// получение бакета по фьютексу:
W>hb = hash_futex(&key);
W>// обход всех записей в бакете:
W>plist_for_each_entry_safe(this, next, &hb->chain, list)
W>// проверка на коллизии
W>if (match_futex (&this->key, &key))
W>
W>Везде результаты plist_for_each_entry* отфильтровываются через match_futex.
Здравствуйте, watchmaker, Вы писали:
Вы не внимательно читаете заданный вопрос — это не проверка на коллизии, а вполне конкретный код для нахождения заданного бакета, чтобы, например пробудить его !// проверка на коллизии
if (match_futex (&this->key, &key))
Re[5]: C++11: Синхронизация - Условные переменные и ложные п
Здравствуйте, watchmaker, Вы писали:
Вы не внимательно читаете заданный вопрос — это не проверка на коллизии, а вполне конкретный код для нахождения заданного бакета, чтобы, например пробудить его !// проверка на коллизии
if (match_futex (&this->key, &key))