Практическое задание по курсу Параллельное Программирование на кафедре ВМ, факультета ЕН, 2016 год.
Lock-free skiplist.
-
Java SDK 7 или более поздняя: http://www.oracle.com/technetwork/java/javase/downloads/index.html
-
Apache Maven 3.x: http://maven.apache.org/download.cgi
Задание включает в себя следующие основные исходные файлы:
-
src/main/java/ru/ifmo/mt/skiplist/IntSkipListMap.java содержит реализацию-заглушку отображения.
В этом файле требуется реализовать отображение на основе структуры данных skiplist.
Методы чтения должны быть без ожидания, методы модификации - без блокировки. -
pom.xml содержит описание проекта для системы сборки Maven. Используейте его, чтобы создать проект в вашей любимой среде разработки. Рекомендуется IntelliJ IDEA. Используя операцию File | Import Project... и указав месторасположение файла pom.xml, вы создадите проект для выполнения задания.
-
Необходимо разработать реализацию отображения на основе skiplist без блокировок.
-
Используйте книгу "The Art Of Multiprocessor Programming" (глава 14) или любые другие источники для того, чтобы разобраться с алгоритмом.
-
Код должен быть отформатирован в сотвеетсвевии со стандартным Java стилем используя 4 пробела для выравнивания кода. Плохо отформатированный код не будет проверяться.
Проект должен собираться и проходить все тесты, которые были вами добавлены.
Для запуска тестов из IntelliJ IDEA откройте файл с тестом (используйте Сtrl+N для поиска класса по имени) и запускайте его или отдельный тесты на исполнение с помощью комбинации Ctrl+Shift+F10.
-
Сдавать задание нужно в виде форка и пулл-реквеста, в описании укажите ФИО и номер группы. Подробнее про пулл-реквесты можно почитать тут: http://habrahabr.ru/post/125999/ и https://help.github.com/articles/using-pull-requests.
-
Если задание выполнено неверно, то это будет написано в комментариях к пулл-реквесту. Сдавать задание на проверку можно несколько раз.
-
После того, как будет сдано верное решение, его нужно защитить во время практического занятия. В рамках защиты будет задано несколько вопросов по вашему коду.
https://docs.google.com/spreadsheets/d/16GHoTqEzEIGRbedos-nUAFBvQL_c3w3NO1V72MK69Z0/edit?usp=sharing
За задание можно получить либо 0, либо 10 баллов. За неуспешные сдачи и ошибки баллы не снимаются, но ставятся только при наличии рабочей реализации и понимания.