如何在 C 11 中不使用
简介
自从引入多线程以来,在 C 11 中实现线程安全单例一直是争论的话题。虽然互斥体提供了一种实现线程安全的直接方法,但它们会带来性能开销。本文探讨了一种在不使用互斥体的情况下实现多线程安全单例的替代方法。
带有并发等待的延迟初始化
C 11 引入了一项新的语言功能,可以简化实现惰性初始化。如果静态局部变量已被初始化,并发执行现在将等待,从而无需手动锁定。
实现
检索单例实例的简单静态函数可以按如下方式实现:
<code class="cpp">static Singleton& get() { static Singleton instance; return instance; }</code>
只要编译器正确实现该标准,此函数将在 C 11 中提供正确的行为。
阻止单例
尽管实现了这种简化,但作者强调,通常不鼓励使用单例。由于其固有的局限性,他们主张完全避免单例。
附加说明
以上是你能在 C 11 中创建一个线程安全的单例而不使用 `` 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!