分離線程和Main() Exit 的後果
考慮一個場景,其中分離線程啟動並在其控制std 後繼續執行: :thread 物件超出範圍。該標準對這個主題的潛在沉默引起了人們的關注:當 main() 函數退出時,分離執行緒會變成什麼?
未定義的行為或定義的效果?
標準缺乏關於此事的明確指導方針。然而,對原始問題的回答提供了澄清:
加入分離執行緒和訊號處理程序
解決第二個問題,回應斷言可以透過*_at_thread_exit 系列函數加入分離執行緒。這些函數可以發出執行緒執行完成的訊號,同時確保所有析構函數都已被呼叫。
但是,單獨使用條件變數或訊號量不足以實現可靠的連接。此標準對訊號處理期間的程式碼執行實施限制,除非實作明確允許,否則不包括條件變數的使用。
程序行為的後果
鑑於這些根據觀察,標準對main() 退出時線程行為的約束規定了開發人員的具體操作:
以上是當'main()”函數退出時,分離的執行緒會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!