Смотри, есть много вариантов. Примитивы котов покрывают все, что надо. Тот же спектр, что и обычные мютексы+кондвары, это вроде даже доказано. Я так понимаю идея в том, что в один момент только один поток может писать в файл, так? Я бы написал на стримах (fs2), там оч просто. Данные собираются и отрабатываются на нескольких стримах, а потом стекают в один, который пишет в файл. Естественно функциональные примитивы (на которых стримы и написаны) внутри используют мютексы и кондвары, но как бы это всего лишь имплементация. Так и Раст использует такие же примитивы.