C 中從執行緒獲得計算結果返回主線程有多少種方法,各有什麼優劣?

時間 2021-05-11 00:45:39

1樓:Mimosa

在Windows裡的多執行緒程式設計,可以使用訊號方式,簡單、安全、清晰地獲取多執行緒返回的值。

intthrValue=0

;HANDLE

hEndEvent

=NULL

;// 執行緒

UINT

APIENTRY

thrProc

(void*p

)void

main(){

::hEndEvent

=CreateEvent

(NULL

,TRUE

,FALSE

,NULL

);_beginthreadex

(....,

thrProc

,......);

// (略)

//....

WaitForSingleObject

(hEndEvent

,INFINITE

);//在此,安全地獲取了多執行緒返回的值 thrValue。

上面演示的是整數

thrValue

。事實上可以為任何型別的資料,也不一定需要是全域性變數。

2樓:

std::ref不就相當於是個指標嗎,1和2沒區別啊。

std::future本身也沒有和多執行緒強行繫結。

其實三種都是一樣的,都是執行緒間共享記憶體空間,執行的執行緒把結果寫入這塊記憶體。

唯一區別就在於future的get自帶同步,會等到promise做了set之後才返回,其中用到的機制類似條件變數,這種同步能保證操作先後順序。而12需要自己去寫邏輯判斷是否已被寫入。

在c 中主線程如何乾掉另乙個執行緒?

Edward Tan 多執行緒之間的通訊可以用發訊息的方式來完成通訊。我們可以這樣設計,不同執行緒都是乙個個runloop,他們共享乙個message queue。我們會將發動的訊息乙個個裝到這個queue裡面。比如取消中斷某個執行緒的runloop,執行緒在每次迴圈後去檢查這個mq,然後來根據裡面...

你從哪些愛好中獲得樂趣或者從哪些事中獲得快樂?

賈有錢 玩車,改完車會非常愉悅開心快樂。開著心愛的車去跑山,更加開心愉悅。只要做自己喜歡的事情,就會開心愉悅,工作也是 不會嫌累 jill 養花和爬山。家裡有點植物才有些生機,數量不需多,點綴即可。爬山最大的收穫是運動後的滿足感,偶爾也會有意外收穫,關鍵要有善於發現的心境。 美少女z 我覺得和自己喜...

人總是從比較中獲得快樂?

其實每個人是有自己內心觸動到自己的快樂,但是因為每個人都是從幼小走向強大,就想一張白紙,會被環境和成長刻下不同的烙印,然後,我們生長的體系裡,告訴我們很多價值的認可和意義都需要有所標準,自然也會產生比較,合理的比較是積極而正面的,但是發現自己內心的快樂,與昨日的自己進行比較,或者說可以內心有所突破,...