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