courses:high_performance_computing:lock_free
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| courses:high_performance_computing:lock_free [2018/10/28 19:10] – 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 стиле следующий интерфейс: | ||
| <code java> | <code java> | ||
| /** | /** | ||
| - | * Lock-Free очередь | + | * Lock-Free |
| - | * @param <T> Тип | + | * @param <T> Тип |
| */ | */ | ||
| - | public interface | + | public interface |
| + | /** | ||
| + | * Добавить ключ к множеству | ||
| + | * | ||
| + | * Алгоритм должен быть как минимум lock-free | ||
| + | * | ||
| + | * @param value значение ключа | ||
| + | * @return false если value уже существует в множестве, | ||
| + | */ | ||
| + | boolean add(T value); | ||
| /** | /** | ||
| - | | + | |
| * | * | ||
| - | | + | |
| * | * | ||
| - | * @return true если очередь пуста, иначе - false | + | * @param value значение ключа |
| + | * @return | ||
| + | */ | ||
| + | boolean remove(T value); | ||
| + | |||
| + | |||
| + | /** | ||
| + | * Проверка наличия ключа в множестве | ||
| + | * | ||
| + | * Алгоритм должен быть как минимум wait-free | ||
| + | * | ||
| + | * @param value значение ключа | ||
| + | * @return true если элемент содержится в множестве, | ||
| + | */ | ||
| + | boolean contains(T value); | ||
| + | |||
| + | |||
| + | /** | ||
| + | * Проверка множества на пустоту | ||
| + | * | ||
| + | * Алгоритм должен быть как минимум lock-free | ||
| + | * | ||
| + | * @return true если множество пусто, иначе - false | ||
| */ | */ | ||
| boolean isEmpty(); | boolean isEmpty(); | ||
| + | | ||
| + | /** | ||
| + | * Возвращает lock-free итератор для множества | ||
| + | * | ||
| + | * Итератор должен быть линеаризуем в терминах представления когда-либо существовавшего вместе набора элементов | ||
| + | * | ||
| + | * @return итератор для множества | ||
| + | */ | ||
| + | java.util.Iterator< | ||
| } | } | ||
| </ | </ | ||
| // | // | ||
| - | - Имя класса реализации - //LockFreePriorityQueue// | + | - Имя класса реализации - //SetImpl// |
| - Класс должен иметь конструктор без параметров | - Класс должен иметь конструктор без параметров | ||
| - | - Pull Request должен содержать в части тестирования проходящие: | + | - Pull Request должен содержать в части тестирования проходящие тесты корректности на основе [[https:// |
| - | * Нагрузочные тесты на основе [[http:// | + | - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent |
| - | * Тесты корректности на основе [[https:// | + | - Гарантировать |
| - | - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent | + | - Изменение |
| - | - Не обязательно учитывать | + | - Число |
courses/high_performance_computing/lock_free.1540743030.txt.gz · Last modified: 2018/10/28 19:10 by kel