利用Qwen大模型進行c++11并發庫的學習,與時俱進!!!!

文章目錄

  • 1、學習新的東西可以借助ai和官方文檔
    • 1.1 會問問題
  • 異步編程教程
    • 1. std::future
    • 2. std::shared_future
    • 3、std::promise
    • 4、4. std::packaged_task
    • 5. std::async
    • 6. std::future_status 和等待函數
  • 綜合代碼
  • 總結

1、學習新的東西可以借助ai和官方文檔

因為別人寫的有可能會寫錯或者水平不高

1.1 會問問題

eg:
在這里插入圖片描述
這樣寫可能會講的不清晰并且會少講函數接口等
你可以這樣問
在這里插入圖片描述
這樣就會清晰很多。
后續不懂最好是問ai,再參考官方文檔。

異步編程教程

在這里插入圖片描述

1. std::future

std::future 是一個模板類,用于訪問異步操作的結果。它提供了一種機制來獲取異步操作(可能在另一個線程中執行)的返回值。

常用接口
get(): 獲取結果,如果結果未準備好則阻塞

valid(): 檢查 future 是否擁有共享狀態

wait(): 等待結果變為可用

wait_for(): 等待一段時間

wait_until(): 等待直到某個時間點

#include <iostream>
#include <future>
#include <thread>
#include <chrono>int calculate() {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模擬耗時計算return 42;
}int main() {// 使用 async 啟動異步任務,返回 futurestd::future<int> fut = std::async(std::launch::async, calculate);std::cout << "正在計算結果..." << std::endl;// get() 會阻塞直到結果可用int result = fut.get();std::cout << "結果是: " << result << std::endl;// 再次調用 get() 會導致異常,因為共享狀態已被消費// int result2 = fut.get(); // 錯誤!return 0;
}

2. std::shared_future

在這里插入圖片描述

std::shared_future 類似于 std::future,但可以被多次訪問(允許多個線程等待同一個結果)。

常用接口
與 std::future 類似,但可以多次調用 get()

#include <iostream>
#include <future>
#include <thread>
#include <vector>void worker(std::shared_future<int> fut) {// 每個線程都可以安全地獲取結果int result = fut.get();std::cout << "Worker got result: " << result << std::endl;
}int main() {// 創建一個 promise 對象std::promise<int> prom;// 從 promise 獲取 futurestd::future<int> fut = prom.get_future();// 將 future 轉換為 shared_futurestd::shared_future<int> shared_fut = fut.share();// 創建多個線程共享同一個結果std::vector<std::thread> threads;for (int i = 0; i < 3; ++i) {threads.emplace_back(worker, shared_fut);}// 設置 promise 的值prom.set_value(42);// 等待所有線程完成for (auto& t : threads) {t.join();}return 0;
}

3、std::promise

std::promise 是一個模板類,用于存儲一個值或異常,稍后可以通過與之關聯的 std::future 對象獲取。

常用接口
get_future(): 獲取與 promise 關聯的 future

set_value(): 設置結果值

set_exception(): 設置異常

set_value_at_thread_exit(): 在線程退出時設置值

set_exception_at_thread_exit(): 在線程退出時設置異常
在這里插入圖片描述
在這里插入圖片描述

#include <iostream>
#include <future>
#include <thread>
#include <stdexcept>void calculate(std::promise<int> prom) {try {// 模擬計算std::this_thread::sleep_for(std::chrono::seconds(1));int result = 42;// 設置結果值prom.set_value(result);} catch (...) {// 捕獲所有異常并存儲在 promise 中prom.set_exception(std::current_exception(

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919342.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919342.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919342.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

曲面/線 擬合gnuplot

1. 下載gnuplot windows 版&#xff0c;安裝&#xff0c;&#xff08;別的綠色的可能下載即用&#xff0c;推薦下面鏈接這款&#xff09; gnuplot - Browse Files at SourceForge.net 2. 準備數據&#xff0c;存成data.dat或者其它文件名稱&#xff0c;放桌面 數據內容如下…

CentOS Linux 7 (Core)上部署Oracle 11g、19C RAC詳細圖文教程

一、部署參考鏈接&#xff1a; 墨天輪數據庫社區 - 樂知樂享&#xff0c;同心共濟 實戰篇&#xff1a;一步步教你 Linux 7 安裝 Oracle 11GR2 RAC 實戰篇&#xff1a;Linux7 安裝 Oracle 19C RAC 詳細圖文教程 Linux7 安裝 Oracle 19C RAC 詳細圖文教程

WebSocket DevTools 開發調試工具完全指南 – 實時監控、消息攔截、性能分析一站式解決方案

概述 WebSocket DevTools 是一款專為 WebSocket 連接調試而設計的瀏覽器開發者工具擴展。它提供了實時監控、消息攔截、連接管理等功能&#xff0c;幫助開發者快速定位和解決 WebSocket 相關問題。 主要特性 &#x1f50d; 實時監控&#xff1a;實時顯示 WebSocket 連接狀態…

常見的光源頻閃控制方式

一、光源頻閃的優勢消除運動模糊&#xff0c;提升成像質量 光源以極短脈沖&#xff08;微秒級&#xff09;與相機曝光嚴格同步&#xff0c;實現“瞬時凍結”高速運動物體。增強特征對比度&#xff0c;提高缺陷檢出率 頻閃模式下&#xff0c;LED可短時超負荷工作&#xff0c;峰值…

讀From GPT-2 to gpt-oss: Analyzing the Architectural Advances(續)

序 本篇由來&#xff0c;在COC上我當面感謝了組委會和姜寧老師&#xff0c;隨即被姜寧老師催稿&#xff0c;本來當天晚上寫了一個流水賬&#xff0c;感覺甚為不妥。于是決定慢慢寫&#xff0c;緩緩道來。要同時兼顧Show me the code&#xff0c;Show me the vide。希望能形成一…

6-7 TIM編碼器接口 [江科協STM32]

一、引入&#xff08;1&#xff09;編碼器接口的好處&#xff1a;節約軟件資源&#xff1a;外部中斷計次&#xff0c;程序頻繁進入中斷&#xff0c;則軟件資源會被簡單頻繁的工作給占用&#xff0c;效率不高使用定時器的編碼器接口&#xff0c;再配合編碼器&#xff0c;就可以測…

01數據結構-交換排序

01數據結構-交換排序1.冒泡排序1.1基礎冒泡排序1.1.1基礎冒泡排序代碼實現1.2冒泡排序的一次優化1.2.1冒泡排序的第一次優化代碼實現1.3冒泡排序的二次優化1.3.1 冒泡排序的二次優化代碼實現2.快速排序2.1雙邊循環法2.1.1雙邊循環法的代碼實現2.2單邊循環法2.2.1單邊循環法代碼…

MySQL架構和儲存引擎

MySQL服務器整體架構如下&#xff1a;連接層&#xff1a;連接層的作用是處理客戶端的連接&#xff0c;如何管理連接的。網絡端口和連接管理線程&#xff1a;網絡端口&#xff1a;一臺服務器可以連接網絡上多個端口的客戶連接&#xff0c;只需要開放多個端口&#xff0c;只需要在…

詳解flink java基礎(一)

文章目錄1.流式處理flink介紹2.Flink SQL介紹3. Flink Runtime4.使用flink集成kafka5.使用Flink SQL進行有狀態流處理6.Event time & Watermarks7. flink Checkpoints & recovery1.流式處理flink介紹 實時服務依賴流式處理: flink優點: 高性能豐富的特性&#xff1a…

Day119 持續集成docker+jenkins

Day119 dockerjenkins 1.Dockerfile Dockerfile 可以用于項目部署。通過編寫 Dockerfile&#xff0c;可以將整個項目及其所需的依賴項打包到一個 Docker 鏡像中&#xff0c;然后在任何支持 Docker 的環境中部署和運行該鏡像 Dockerfile 是用于構建 Docker 鏡像的文本文件。它包…

Vue3+Vite MPA多頁面應用開發完整指南 – 從零搭建到部署優化

什么是 MPA 多頁面應用 MPA&#xff08;Multi-Page Application&#xff09;是由多個獨立的 HTML 頁面組成的應用&#xff0c;每個頁面都有獨立的入口文件。與 SPA 不同&#xff0c;MPA 的每個頁面都是獨立的&#xff0c;頁面間通過鏈接跳轉&#xff0c;適合大型項目或需要 SE…

【企業級架構】企業戰略到技術落地的全流程【第一篇】

目錄 一、人生藍圖與企業羅盤&#xff1a;戰略視角下的成長架構 1. 大學畢業迷茫期 → 企業未制定戰略前&#xff1a;無方向、無目標? 2. 制定職業規劃 → 企業戰略制定&#xff1a;明確 “去哪” 和 “分幾步走”? 3. 盤點自身能力差距 → 業務架構梳理&#xff1a;搞清…

(二) Python + 地球信息科學與技術 = 經典案例分析

目錄 四、農業精準施肥與產量預測&#xff08;植被指數 機器學習&#xff09; 五、公共場所踩踏事故預警系統&#xff08;時空大數據 Web 開發&#xff09; 六、森林火災智能識別與救援路徑規劃&#xff08;遙感 路徑優化&#xff09; 七、海岸線侵蝕動態監測與防護&…

從需求到部署全套方案:餐飲服務許可證數據可視化分析系統的大數據技術實戰

&#x1f393; 作者&#xff1a;計算機畢設小月哥 | 軟件開發專家 &#x1f5a5;? 簡介&#xff1a;8年計算機軟件程序開發經驗。精通Java、Python、微信小程序、安卓、大數據、PHP、.NET|C#、Golang等技術棧。 &#x1f6e0;? 專業服務 &#x1f6e0;? 需求定制化開發源碼提…

Qt 關于QString和std::string數據截斷的問題- 遇到\0或者0x00如何處理?

Qt 關于QString和std::string數據截斷的問題- 遇到\0或者0x00如何處理&#xff1f;引言一、解決方案二、使用QByteArray注意事項引言 在Qt開發中&#xff0c;使用QString或std::string獲取、發送字符串時&#xff0c;遇到\0(空字符)或者0x00(十六進制表示)可能導致數據截斷&am…

Spring Cloud LoadBalancer 最佳實踐

Ribbon 曾經是 Spring Cloud 家族默認的客戶端負載均衡工具&#xff0c;而 Spring Cloud LoadBalancer (SCLB) 是官方替換 Ribbon 的新實現。表面上它們都解決 “服務調用時選哪個實例” 的問題&#xff0c;但在理念、架構和生態上差異不小。一、Ribbon vs SCLB1. 定位和生態…

【STM32】SPI 與 Flash 筆記

1?? SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外設接口&#xff09;英文解釋&#xff1a; Serial&#xff1a;串行Peripheral&#xff1a;外設Interface&#xff1a;接口用途&#xff1a;MCU 與外部設備&#xff08;Flash、傳感器等&#xff09;高速數據通…

抽象工廠設計模式 Abstract Factory

抽象工廠抽象工廠設計模式是一種創建模式&#xff0c;它提供了一個用于創建相關或從屬對象族的接口&#xff0c;而無需指定其具體類。 它在以下情況下特別有用&#xff1a; 您需要創建必須一起使用并且是一致系列的一部分的對象&#xff08;例如&#xff0c;按鈕、復選框和菜單…

WSL 下的虛擬網卡配置

第一部分&#xff1a;Windows 虛擬網卡創建指南 1. 原理 在 Windows 里&#xff0c;“虛擬網卡”本質是由網絡驅動在系統網絡棧中創建的一個 軟件網卡接口。它的作用和物理網卡類似&#xff0c;只不過不直接連接到物理硬件&#xff0c;而是通過內核網絡驅動與宿主機網絡進行交換…

Dify web前端源碼本地部署詳細教程

目錄 1. 先啟動API 2. 啟動worker服務 3. 啟動web 4. 訪問登陸地址 在前面的文章中&#xff0c;Dify源碼部署&#xff0c;搭建二次開發環境&#xff08;一&#xff09; 已經記錄了如何在本地啟動API、work、中間件。在本篇文章中&#xff0c;將概述如何啟動dify web源碼項…