代码
- 代码的名称是read_write_mutex.h
- 初步优化
- 如果涉及到进程挂掉了,造成进程堵塞,如何解决?还未涉及
#include <boost/interprocess/sync/named_condition.hpp>
#include <boost/interprocess/sync/named_mutex.hpp>
namespace bip = boost::interprocess;
namespace chy{
class shared_mutex
{
private:
class state_data{
public:
state_data() :
shared_count(0),
exclusive(false),
exclusive_waiting_blocked(false)
{}
void assert_free() const{
BOOST_ASSERT( ! exclusive );
BOOST_ASSERT( shared_count==0);
}
void assert_locked() const{
BOOST_ASSERT( exclusive);
BOOST_ASSERT( shared_count==0);
}
void assert_lock_shared() const{
BOOST_ASSERT( !exclusive);
BOOST_ASSERT( shared_count>0 );
}
bool can_lock() const{
return ! (shared_count || exclusive);
}
void exclusive_blocked (bool blocked){
exclusive_waiting_blocked = blocked;
}
void lock(){
exclusive = true;
};
void unlock(){