【发布时间】:2016-01-09 03:52:19
【问题描述】:
我有一个类对象,它的函数可以从不同的线程中调用。
可能会遇到 Thread1(T1) 调用析构函数的情况,
而 Thread(T2) 正在同一个对象上执行一些其他功能。
假设 T1 能够首先调用析构函数,那么 T2 中运行的代码会发生什么?
它会产生崩溃还是由于对象已经被销毁,成员函数将停止运行?
是否会在所有类函数的入口处使用互斥锁并在退出时解锁,以确保在析构函数和成员函数之间发生的任何类型的竞争中都不会崩溃?
感谢您的帮助!
【问题讨论】:
-
未定义的行为,参见。 Running method while destroying the object
-
'可能会遇到 Thread1(T1) 正在调用析构函数,而 Thread(T2) 正在同一对象上执行某些其他函数的情况。 - 好吧,改变你的设计,让它不会发生。做坏事,坏事就会接踵而至。
标签: c++ linux multithreading c++11