std::shared_ptr
保证是线程安全的。我不知道典型的实现使用什么机制来确保这一点,但是肯定它必须有一些开销。即使在您的应用程序是单线程的情况下,该开销也会存在。
以上是这种情况吗?如果是这样,这是否意味着如果您不使用线程安全保证,就违反了“您不为不使用的产品付费”的原则?
最佳答案
如果我们在cppreference页面上查找std::shared_ptr,则它们在“实现说明”部分中声明以下内容:
有趣的是注意到一个实际的实现,例如libstdc++实现文档here说:
“选择锁定策略”部分说(重点是我):
并进一步说(强调我的):
因此,至少在此实现中,您无需为不使用的东西付费。