如何在C 11 中不使用
簡介
自從引入多執行緒以來,在C 11 中實作執行緒安全單例一直是爭論的話題。雖然互斥體提供了一種實現執行緒安全的直接方法,但它們會帶來效能開銷。本文探討了一種在不使用互斥體的情況下實作多執行緒安全單例的替代方法。
帶有並發等待的延遲初始化
C 11 引入了一項新的語言功能,可以簡化實現惰性初始化。如果靜態局部變數已初始化,並發執行現在將等待,從而無需手動鎖定。
實作
擷取單例實例的簡單靜態函數可以如下實現:
<code class="cpp">static Singleton& get() { static Singleton instance; return instance; }</code>
只要編譯器正確實現該標準,此函數將在C 11 中提供正確的行為。
阻止單例
儘管實現了這種簡化,但作者強調,通常不鼓勵使用單例。由於其固有的局限性,他們主張完全避免單例。
附加說明
以上是你能在 C 11 中建立一個線程安全的單例而不使用 `` 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!