显式调用 boost::lock
对象的析构函数是否有任何后果?
例如:
boost::mutex M_;
boost::mutex::scoped_lock SL_(M_);
SL_.~unique_lock();
SL_.unlock();
SL_.lock();
//both of the above work on runtime as if nothing happened to SL_
//note: typedef unique_lock<mutex> scoped_lock;
出于好奇而问。
最佳答案
显式调用堆栈分配对象的析构函数是一个非常糟糕的主意 (tm)。原因是一旦析构函数启动,对象在技术上不再存在,但 C++ 并不知道,当对象超出范围时将再次调用析构函数,这将导致未定义的行为。在这样的对象上做任何其他事情(比如调用成员函数)也是未定义的行为。因此,您不能期望所描述的设置有任何合理的行为,只是不要这样做。
关于c++ - 调用 boost::lock 的析构函数的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887000/