Когда-то писал такой класс, но где-то посеял. Могу снова наваять, но может уже такое в бусте есть?
Есть 4 потока и 500 млн. сущностей. Хочется подпускать к каждой из них не более 1 потока, но не запрещать одновременный доступ 4 потоков к разным сущностям. Создать 500 млн мьютексов - это лишнее, ибо потока всего 4.
Я делал класс, который держал 4 мьютекса и выдавал их «в аренду» потокам по предъявлению ID сущности, к которой поток хочет получить доступ. На один и тот же идентификатор выдавался один и тот же мьютекс, на разные идентификаторы - разные мьютексы. После использования, поток сдавал мьютекс обратно в гардероб и мьютекс мог быть переиспользован для доступа к другому ID.
Хотя изобретать велосипеды и круто, но может такое уже есть где-нибудь в бусте?