Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


courses:high_performance_computing:lock_free

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
courses:high_performance_computing:lock_free [2019/04/28 13:18] kelcourses:high_performance_computing:lock_free [2022/11/11 00:49] kel
Line 1: Line 1:
 ====== Lock-free контейнер ====== ====== Lock-free контейнер ======
 +> [[https://classroom.github.com/a/NmuLCbAq|GitHub-classroom]] для самостоятельно изучающих курс **не** в рамках университетских программ
 +
 Необходимо реализовать в lock-free стиле следующий интерфейс: Необходимо реализовать в lock-free стиле следующий интерфейс:
  
Line 7: Line 9:
  * @param <T> Тип ключей  * @param <T> Тип ключей
  */  */
-public interface LockFreeSet<T extends Comparable<T>> {+public interface Set<T extends Comparable<T>> {
     /**     /**
      * Добавить ключ к множеству      * Добавить ключ к множеству
Line 33: Line 35:
      * Проверка наличия ключа в множестве      * Проверка наличия ключа в множестве
      *      *
-     * Алгоритм должен быть как минимум wait-free+     * Алгоритм должен быть как минимум wait-free для типов конечной размерноости и lock-free для остальных
      *      *
      * @param value значение ключа      * @param value значение ключа
Line 44: Line 46:
      * Проверка множества на пустоту      * Проверка множества на пустоту
      *      *
-     * Алгоритм должен быть как минимум wait-free+     * Алгоритм должен быть как минимум lock-free
      *      *
      * @return true если множество пусто, иначе - false      * @return true если множество пусто, иначе - false
Line 53: Line 55:
      * Возвращает lock-free итератор для множества      * Возвращает lock-free итератор для множества
      *      *
-     @return новый экземпляр итератор для множества+     Итератор должен быть линеаризуем в терминах представления когда-либо существовавшего вместе набора элементов 
 +     * 
 +     * @return итератор для множества
      */      */
     java.util.Iterator<T> iterator();     java.util.Iterator<T> iterator();
Line 60: Line 64:
  
 //Дополнительные условности:// //Дополнительные условности://
-  - Имя класса реализации - //LockFreeSet//+  - Имя класса реализации - //SetImpl//
   - Класс должен иметь конструктор без параметров   - Класс должен иметь конструктор без параметров
-  - Pull Request должен содержать в части тестирования проходящие: +  - Pull Request должен содержать в части тестирования проходящие тесты корректности на основе [[https://github.com/Kotlin/kotlinx-lincheck|lincheck]]
-    * Нагрузочные тесты на основе [[http://openjdk.java.net/projects/code-tools/jcstress/|jcstress]] +
-    * Тесты корректности на основе [[https://github.com/Devexperts/lin-check|lincheck]]+
   - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent   - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent
 +  - Гарантировать исполнение на JDK 11
courses/high_performance_computing/lock_free.txt · Last modified: 2023/12/17 14:11 by odoronin