簡體   English   中英

如何在C ++中創建一個構造函數來創建pthread,它應該在線程開始運行時返回

[英]How to create a constructor in C++ for creating pthread which should return when thread starts running

我想為我的線程類創建一個構造函數,它可以創建一個單獨的線程,它應該在線程開始在入口點運行時返回

入口點將是一些將在運行時傳遞的類函數。 派生類函數不能更改,它不會更新任何可以檢查的共享變量。

如何確保我創建的pthread開始在我指定的入口點執行

這不是一個好主意。

首先運行基類的構造函數。 因此,如果基類構造函數在線程到達入口點之前沒有返回,則線程在構造函數尚未運行的對象內運行。 因此完全沒有經驗。

如果入口點是在派生類型中定義的虛方法,那么您肯定會調用未定義的行為。

這也是大多數線程類不是這樣設計的原因。 通常您創建線程對象。 然后調用類似start()的方法,該方法運行作為參數傳遞的函數/方法或可運行對象。 這樣您就知道表示線程的對象是完全構造的,並且所有成員都已正確初始化。

您將需要使用同步原語來執行此操作,例如屏障 您可以簡單地通過一個不同的入口點來包裝您獲得的入口點,該入口點用於指示此同步原語,然后調用其基本入口點。

如果沒有看到你想要實現的任何實際代碼,可以說更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM