c++, блокировка boost::shared_mutex
Имеем два варианта заблокировать шаред мьютекс. Поток блокирует мьютекс на запись, а основной поток пытается получить блокировку на чтение.
1. пробуем заблокировать через try_lock. всегда res==true
#include <boost/thread/shared_mutex.hpp>
#include <mutex>
boost::shared_mutex shared_mtx;
std::mutex mtx;
void thread_fn()
{
shared_mtx.lock_upgrade();
mtx.unlock();
while (true) {
}
}
void main() {
mtx.lock();
std::thread t(thread_fn);
bool res=shared_mtx.try_lock_shared();
t.join();
}
#include <boost/thread/shared_mutex.hpp>
#include <mutex>
boost::shared_mutex shared_mtx;
std::mutex mtx;
void thread_fn()
{
shared_mtx.lock_upgrade();
mtx.unlock();
while (true) {
}
}
void main() {
mtx.lock();
std::thread t(thread_fn);
bool res=shared_mtx.timed_lock(boost::get_system_time() + boost::posix_time::milliseconds(10));
t.join();
}
так и должно быть или это баг такой?