我们有一个静态(单例)类,该类将在多线程环境中使用。我们在其构造函数和其他mrmber函数中使用互斥锁。但是,析构函数没有互斥量。析构函数执行某些任务,例如清理其他成员objetcs等。
我们还需要在析构函数中使用互斥吗?

最佳答案

就访问析构函数正在解构的对象而言,不,它不应该使用互斥体。调用代码负责确保析构函数被调用一次,并且仅被调用一次。那不是破坏者的责任。

在访问任何其他数据或资源方面,从析构函数访问它们没有什么特别的。无论是从此析构函数或任何普通函数调用它们,它们都将需要或不需要使用互斥对象进行相同的保护。

09-11 19:59
查看更多