c++ - 调用 boost::lock 的析构函数的效果?

标签 c++ multithreading boost mutex

显式调用 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/

相关文章:

c++ - 使用静态版本的 boost::filesystem 时出现有趣的 LNK1104 错误

c++ - 在类 : scoped_ptr or shared_ptr? 中将智能指针作为参数传递

c++ - 使 QTcpServer 只接受 IPv4 连接

c++ - Qt 图形用户界面 : Select multiple QLabels with mouse

c++ - 由于静态库而导致单例的多个实例面临的问题

java - 套接字不打印数据

python - (Python) 使用线程通过 getch 查找键输入

java - JSCH 和多线程 java 应用程序的问题

Boost 错误,编译 xtime.hpp 时遇到问题

c# - Mac OS X Lion 上的屏幕捕获程序,最好在其他操作系统上可移植