etc:users:kel:jre_fuzzy_threads_planning
This is an old revision of the document!
Table of Contents
Основанное на анализе кода fuzzy-планирование потоков с применением lincheck для обнаружения ошибок в многопоточном коде
Проблема
Текущие проверки линеаризуемости алгоритмов, например с помощью lincheck, заключаются в случайном многопоточном исполнении кода и сравнеии результатов со всеми возможными последовательными исполнениями тех же операций. В ходе проверки даже самых простых студенческих lock-free алгоритмов выявилась полезность следующих функций:
- Останавливать потоки после / перед CAS для повышения выроятностью некорректных ситуаций
- Долгой остановки потока после / перед CAS с проверкой отработки остальных потоков по своим задачам
Пути решения
Внедриться в JRE или байт-код и на основе понимания использования CAS явно влиять на планирование потоков
Ближайшие задачи
- Разобраться со способами внедрения через байт-код (типа Thread.sleep после / перед CAS)
- Разобраться с возможностью влиять на планирование потоков в JRE
Идеи на обсуждение
etc/users/kel/jre_fuzzy_threads_planning.1580677316.txt.gz · Last modified: 2020/02/03 00:01 by kel