最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

std::promise

2023-07-09 23:17 作者:追逐彗星的尾巴  | 我要投稿

std::promise提供了一種在異步編程中傳遞值的機(jī)制。它通常與std::future一起使用,用于在一個線程中產(chǎn)生值,并在另一個線程中獲取該值。

std::promise允許一個線程(稱為 "提供線程")在某個時間點(diǎn)上設(shè)置一個值,而另一個線程(稱為 "獲取線程")可以在將來的某個時間點(diǎn)上獲取該值。這種機(jī)制允許線程之間進(jìn)行同步和通信,特別是在并發(fā)編程和異步編程的場景中非常有用。

std::promise類提供了一個成員函數(shù)set_value,它允許提供線程設(shè)置一個值。獲取線程可以通過std::future對象來獲取該值。

Case :

需要注意的是,std::promisestd::future一般用于單次的值傳遞。如果需要在多個線程之間進(jìn)行多次傳遞,可以考慮使用std::shared_futurestd::shared_ptr。

std::shared_future

std::shared_future可以通過std::future的成員函數(shù)share顯式構(gòu)造,也可以由std::future對象隱式轉(zhuǎn)換而來。

std::future模型獨(dú)享同步結(jié)果的所有權(quán),是只移動的,成員函數(shù)get只能一次性獲取數(shù)據(jù),如果調(diào)用第二次將引發(fā)異常。而std::shared_future實例是可拷貝的,所以多個對象可以引用同一關(guān)聯(lián)期望值的結(jié)果。

對于每個獨(dú)立的std::shared_future對象,其成員函數(shù)調(diào)用返回的結(jié)果是非同步的。這意味著多個線程同時訪問同一個shared_future對象的成員函數(shù)可能導(dǎo)致數(shù)據(jù)競爭,因為這些函數(shù)可能會修改內(nèi)部狀態(tài)。為了避免數(shù)據(jù)競爭,必須使用鎖來保護(hù)對shared_future對象的訪問。

另外,建議優(yōu)先考慮的解決方法是為每個線程創(chuàng)建一個獨(dú)立的拷貝對象,而不是共享同一個對象。這樣,每個線程都擁有自己獨(dú)立的shared_future對象,可以通過這些對象獲取結(jié)果。由于每個線程都使用自己的拷貝對象,多個線程之間訪問共享同步結(jié)果就是安全的,不會發(fā)生數(shù)據(jù)競爭。

Case :


std::promise的評論 (共 條)

分享到微博請遵守國家法律
昌宁县| 三门县| 寿宁县| 黑河市| 久治县| 墨竹工卡县| 阿巴嘎旗| 兴海县| 依兰县| 巴林右旗| 琼结县| 青浦区| 宣威市| 松原市| 平江县| 保靖县| 东乡| 巴林左旗| 关岭| 板桥市| 阜平县| 怀化市| 永川市| 家居| 博野县| 叙永县| 九江市| 北宁市| 安达市| 泸西县| 白玉县| 虎林市| 石城县| 莆田市| 宁夏| SHOW| 高州市| 龙海市| 天水市| 饶平县| 蓝田县|