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 revision Previous revision
courses:high_performance_computing:lock_free [2018/01/05 18:49]
kel
courses:high_performance_computing:lock_free [2018/10/28 19:10] (current)
kel
Line 4: Line 4:
 <code java> <code java>
 /** /**
- * Lock-Free ​множество. + * Lock-Free очередь ​с приоритетами 
- * @param <T> Тип ​ключей+ * @param <T> Тип ​элементов
  */  */
-public interface ​LockFreeSet<extends Comparable<​T>> { +public interface ​PriorityQueue<extends Comparable<​E>> extends Queue<E> {
-    /** +
-     * Добавить ключ к множеству +
-     * +
-     * Алгоритм должен быть как минимум lock-free +
-     * +
-     * @param value значение ключа +
-     * @return false если value уже существует в множестве,​ true если элемент был добавлен +
-     */ +
-    boolean add(T value); +
- +
-    /** +
-     * Удалить ключ из множества +
-     * +
-     * Алгоритм должен быть как минимум lock-free +
-     * +
-     * @param value значение ключа +
-     * @return false если ключ не был найден,​ true если ключ успешно удален +
-     */ +
-    boolean remove(T value); +
- +
-    /** +
-     * Проверка наличия ключа в множестве +
-     * +
-     * Алгоритм должен быть как минимум lock-free +
-     * +
-     * @param value значение ключа +
-     * @return true если элемент содержится в множестве,​ иначе - false +
-     */ +
-    boolean contains(T value);+
  
     /**     /**
-     * Проверка ​множества ​на пустоту+     * Проверка очереди ​на пустоту
      *      *
-     ​* ​Алгоритм ​должен быть ​wait-free (достаточно lock-free, ​wait-free для ​сильно ​уверенных в себе)+     ​* ​Метод должен быть ​lock-free (wait-free для уверенных в себе)
      *      *
-     * @return true если ​множество ​пусто, иначе - false+     * @return true если очередь ​пуста, иначе - false
      */      */
     boolean isEmpty();     boolean isEmpty();
Line 49: Line 20:
 </​code>​ </​code>​
  
-Дополнительные условности:​ +//Дополнительные условности:​// 
-  - Имя класса реализации - //LockFreeSetImpl//+  - Имя класса реализации - //LockFreePriorityQueue//
   - Класс должен иметь конструктор без параметров   - Класс должен иметь конструктор без параметров
 +  - Pull Request должен содержать в части тестирования проходящие:​
 +    * Нагрузочные тесты на основе [[http://​openjdk.java.net/​projects/​code-tools/​jcstress/​|jcstress]]
 +    * Тесты корректности на основе [[https://​github.com/​Devexperts/​lin-check|lincheck]]
 +  - В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent ​
 +  - Не обязательно учитывать "​ограниченность"​ размера контейнера,​ в этом смысле методы "​add"​ и "​offer"​ эквивалентны
courses/high_performance_computing/lock_free.txt · Last modified: 2018/10/28 19:10 by kel