courses:high_performance_computing:lock_free
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| courses:high_performance_computing:lock_free [2017/04/17 23:57] – created kel | courses:high_performance_computing:lock_free [2023/12/17 14:11] (current) – odoronin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Lock-free контейнер ====== | ====== Lock-free контейнер ====== | ||
| + | > [[https:// | ||
| + | |||
| Необходимо реализовать в lock-free стиле следующий интерфейс: | Необходимо реализовать в lock-free стиле следующий интерфейс: | ||
| Line 7: | Line 9: | ||
| * @param <T> Тип ключей | * @param <T> Тип ключей | ||
| */ | */ | ||
| - | public interface | + | public interface |
| /** | /** | ||
| * Добавить ключ к множеству | * Добавить ключ к множеству | ||
| Line 17: | Line 19: | ||
| */ | */ | ||
| boolean add(T value); | boolean add(T value); | ||
| + | |||
| /** | /** | ||
| Line 27: | Line 30: | ||
| */ | */ | ||
| boolean remove(T value); | boolean remove(T value); | ||
| + | |||
| /** | /** | ||
| * Проверка наличия ключа в множестве | * Проверка наличия ключа в множестве | ||
| * | * | ||
| - | * Алгоритм должен быть как минимум wait-free | + | * Алгоритм должен быть как минимум wait-free |
| * | * | ||
| * @param value значение ключа | * @param value значение ключа | ||
| Line 37: | Line 41: | ||
| */ | */ | ||
| boolean contains(T value); | boolean contains(T value); | ||
| + | |||
| /** | /** | ||
| * Проверка множества на пустоту | * Проверка множества на пустоту | ||
| * | * | ||
| - | * Алгоритм должен быть | + | * Алгоритм должен быть |
| * | * | ||
| * @return true если множество пусто, иначе - false | * @return true если множество пусто, иначе - false | ||
| */ | */ | ||
| boolean isEmpty(); | boolean isEmpty(); | ||
| + | | ||
| + | /** | ||
| + | * Возвращает lock-free итератор для множества | ||
| + | * | ||
| + | * Итератор должен быть линеаризуем в терминах представления когда-либо существовавшего вместе набора элементов | ||
| + | * | ||
| + | * @return итератор для множества | ||
| + | */ | ||
| + | java.util.Iterator< | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | // | ||
| + | - Имя класса реализации - //SetImpl// | ||
| + | - Класс должен иметь конструктор без параметров | ||
| + | - Pull Request должен содержать в части тестирования проходящие тесты корректности на основе [[https:// | ||
| + | - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent | ||
| + | - Гарантировать исполнение на JDK 11 | ||
| + | - Изменение структуры данных должно происходить в разных частях независимо (то есть не должно быть contention гарантированно на одном элементе структуры данных, | ||
| + | - Число " | ||
courses/high_performance_computing/lock_free.1492462669.txt.gz · Last modified: 2017/04/17 23:57 by kel