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
courses:high_performance_computing:lock_free [2020/06/05 05:32] odoronincourses:high_performance_computing:lock_free [2023/12/17 14:11] (current) odoronin
Line 1: Line 1:
 ====== Lock-free контейнер ====== ====== Lock-free контейнер ======
 +> [[https://classroom.github.com/a/NmuLCbAq|GitHub-classroom]] для самостоятельно изучающих курс **не** в рамках университетских программ
 +
 Необходимо реализовать в lock-free стиле следующий интерфейс: Необходимо реализовать в lock-free стиле следующий интерфейс:
  
Line 33: Line 35:
      * Проверка наличия ключа в множестве      * Проверка наличия ключа в множестве
      *      *
-     * Алгоритм должен быть как минимум wait-free для типов конечной размерноости и lock-free для отальных+     * Алгоритм должен быть как минимум wait-free для типов конечной размерноости и lock-free для остальных
      *      *
      * @param value значение ключа      * @param value значение ключа
Line 53: Line 55:
      * Возвращает lock-free итератор для множества      * Возвращает lock-free итератор для множества
      *      *
-     @return новый экземпляр итератор для множества+     Итератор должен быть линеаризуем в терминах представления когда-либо существовавшего вместе набора элементов 
 +     * 
 +     * @return итератор для множества
      */      */
     java.util.Iterator<T> iterator();     java.util.Iterator<T> iterator();
Line 62: Line 66:
   - Имя класса реализации - //SetImpl//   - Имя класса реализации - //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+  - Гарантировать исполнение на JDK 11 
 +  - Изменение структуры данных должно происходить в разных частях независимо (то есть не должно быть contention гарантированно на одном элементе структуры данных, например - корне) 
 +  - Число "холостых" аллокаций для потоков, у которых не проходит CAS должно быть минимизировано
courses/high_performance_computing/lock_free.1591324355.txt.gz · Last modified: 2020/06/05 05:32 by odoronin