ты слишком много хочешь, как мне кажется. у тебя есть две сущности борющиеся за один не конкурентный в данном случае ресурс. более того, они хотят его уметь захватывать и отпускать позже.
это неразрешимая проблема.
то есть если первая инициализация началась - мы смело можем сказать, что ресурс мапы взят, но не отпущен до тех пор, пока лямбда не выполниться. так как ты хочешь внутри этой лямбды захватить тот же ресурс(который уже схвачен) - ты получаешь дедлок. этож прям классическая ситуация.
тебе нужно определить порядок захвата и высвобождения ресурса. в данном случае ты не можешь и не должен пытаться в обоих лямбдах сделать компут иф абсент, так как это и есть критическая секция. нужна гарантия, что пока выполняется одна инициализация другая(втом числе вложенно) не будет запущена, либо! не захватывать ресурс в самих лямбдах, а делать это иным путем.
опять же - вариантов куча. испльзовать разные кеши, иниицализировать промежуточно, налочить критические секции и максимально сузить их, ???? что нибудь еще. в текущей реализации про вложенность можно полностью забыть.
Ну я сказал уже, от компут иф абсентов я готов отказаться. Таким макаром то понятно что не получится. Но мапа - всего лишь кеш же. И конкурентный доступ там - это прогрев кеша, либо чтение из кеша. Мне кажется уж такая мелочь не должна мешать вложенности лямбд, если не через компут оф, то хотя бы так...
Ладно, на свежую голову позже ещё гляну.