Но, т.к. одновременно может существовать огромное количество коопераций, создать для каждой из них собственный mutex может быть невозможно из-за технических ограничений операционной системы. Поэтому для защиты информации о взаимоотношениях коопераций используется один mutex сразу для всех коопераций.
Физическая реализация mutex-а скрыта. Для синхронизации операций по работе с информацией о взаимоотношениях коопераций необходимо использовать данный класс. Он захватывает mutex в конструкторе и освобождает в деструкторе. Предполагается, что данный класс будет использован следующим образом:
void some_func() { // В этом блоке определяем взаимоотношения коопераций. { so_4::rt::impl::coop_relation::lock_t l; ... } }