```cppstd::vectоr frаme_lоcks;// Threаd Afrаme_lоcks[2].lock(); // Thread Bframe_locks[2].lock_shared();```The Buffer Manager implements fine-grained locking by providing a `std::shared_mutex` for each physical frame. Based on the snippet above, what happens if Thread A holds an exclusive lock on Frame 2, and Thread B tries to acquire a shared lock on Frame 2?