Здравствуйте, andyag, Вы писали:
a> .>С concurrency непонятно что делать. Ведь begin-commit из разных потоков пускать не получится. По-моему можно сделать только саму модификацию списка, через CAS делать замену вершины стека.
a> Да вот как раз было сильное желание не делать велосипед, т.к. это маленькая часть от задачки, которую хотелось решить "перед завтраком" 
Вряд ли есть что-то сразу готовое, ибо довольно специфическое требование, а универсальное решение будет неэффективным, как мне кажется.
Поэтому попробуй свою задачу через другие абстракции выразить, не через STM, а, скажем, через специальную структуру данных.