Бих искал да контролирам достъпа до гетери и сетери за куп класове данни, за да ги направя безопасно достъпни от множество нишки едновременно. Правил съм това в Java преди с java.util.concurrent.locks.ReentrantReadWriteLock и беше доста безболезнено.
Но сега имам много проблеми в текущия си C++ проект, защото не мога да намеря имплементация за повторно влизане при четене/заключване. По-конкретно, искам такава, която позволява на нишката да получи заключването за четене, ако вече има заключването за запис, без блокиране и без първо да се откаже от заключването за запис.
Причината е проста: някои от моите методи за настройка извикват методи за получаване и първите (обикновено) получават ключалки за запис, а вторите ключалки за четене. Не искам да изопачавам простата си getter/setter архитектура само за да заобиколя ограниченията в заключващите класове.
Опитах Qt (4.8) QReadWriteLock и свързани класове, както и unique_lock и shared_lock на Boost. Нито една библиотека не прилага необходимото повторно влизане. Някоя друга част от Boost адресира ли това?
Или има друга библиотека, която има това? Наистина съм изненадан, че нито Qt, нито Boost изглеждат, тъй като изглеждат толкова очевидно желана функция. (И който е част от стандартната библиотека на Java от 2004 г.)