在C/C++ 之中,我们常常利用RAII机制,来处理某个临时块得初始、及利用编译器自动析构,但这可能存在一定的致命性风险,如果你没有遇到,只是你没有过多的进行了解,挨得毒打太小,导致的。
举几个小例子:
以利用 std::lock_guard<std::mutex> 为例;
定义:
typedef std::mutex SynchronizedObject;
typedef std::lock_guard<SynchronizedObject> SynchronizedObjectScope;
例一:
bool IForwarding::TryRemove(boost::asio::ip::tcp::socket* socket, bool disposing) noexcept {
std::shared_ptr<boost::asio::ip::tcp::socket> ptr;
IForwarding::SynchronizedObjectScope scope(syncobj_);
return Dictionary::TryRemove(sockets_, socket, ptr);
}
上述例子,在不同得编译器根平台上面会存在不同得效果,取决于编译器得实现,按照人们显示理解&