Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


courses:high_performance_computing:lock_free

Lock-free контейнер

Необходимо реализовать в lock-free стиле следующий интерфейс:

/**
 * Lock-Free очередь с приоритетами
 * @param <T> Тип элементов
 */
public interface PriorityQueue<E extends Comparable<E>> extends Queue<E> {
 
    /**
     * Проверка очереди на пустоту
     *
     * Метод должен быть lock-free (wait-free для уверенных в себе)
     *
     * @return true если очередь пуста, иначе - false
     */
    boolean isEmpty();
}

Дополнительные условности:

  1. Имя класса реализации - LockFreePriorityQueue
  2. Класс должен иметь конструктор без параметров
  3. Pull Request должен содержать в части тестирования проходящие:
    • Нагрузочные тесты на основе jcstress
    • Тесты корректности на основе lincheck
  4. В реализации не предполагается увидеть стандартные контейнеры из java.util.concurrent
  5. Не обязательно учитывать “ограниченность” размера контейнера, в этом смысле методы “add” и “offer” эквивалентны
courses/high_performance_computing/lock_free.txt · Last modified: 2018/10/28 19:10 by kel