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