[{"data":1,"prerenderedAt":797},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng":368,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng":781,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng":796},{"id":4,"title":5,"body":6,"canonicalPath":348,"chapter":349,"chapterSort":350,"date":351,"description":108,"docI18nKey":352,"docKey":353,"docRoot":354,"docTitle":355,"extension":356,"i18nKey":357,"isBlogPost":358,"isWikiDoc":359,"isWikiIndex":358,"layout":360,"legacyPath":361,"locale":362,"localeSlug":363,"meta":364,"navigation":359,"path":348,"seo":365,"sourcePath":361,"sourceStem":357,"stem":357,"wikiDepth":366,"__hash__":367},"content/wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程.md","并发编程",{"type":7,"value":8,"toc":338},"minimark",[9,13,17,30,33,36,39,74,77,81,98,101,111,114,238,241,280,283,286,328,331],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16],"p",{},"现代计算机通常有多个 CPU 核心。一个程序如果只在一个线程里顺序执行，就无法让多个耗时任务同时推进。典型场景包括：",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"一个线程保持界面响应，另一个线程处理后台任务。",[21,25,26],{},"同时等待多个网络请求、定时器或外设事件。",[21,28,29],{},"把可拆分的计算任务分给多个线程。",[14,31,32],{},"并发编程的难点不在于\"开线程\"本身，而在于生命周期和共享数据。只要两个线程同时读写同一份数据，就必须认真处理同步问题。",[10,34,35],{"id":35},"学习路线",[14,37,38],{},"本节拆成几个文件级子章节来学：",[18,40,41,52,62,68],{},[21,42,43,47,48,51],{},[44,45,46],"code",{},"std::thread","：创建线程，并用 ",[44,49,50],{},"join()"," 等待结束。",[21,53,54,57,58,61],{},[44,55,56],{},"std::mutex"," 和 ",[44,59,60],{},"std::lock_guard","：保护共享数据。",[21,63,64,67],{},[44,65,66],{},"std::atomic","：简单计数器的无锁线程安全操作。",[21,69,70,73],{},[44,71,72],{},"std::condition_variable","：一个线程等待另一个线程发通知。",[14,75,76],{},"如果只启动一个任务，同步和并发的结果可能看起来一样。差异通常要在\"两个或更多任务同时等待或同时计算\"时才明显。这和 Boost.Asio 中一个定时器看不出异步优势、两个定时器才看出区别是同一个道理。",[10,78,80],{"id":79},"c-标准版本","C++ 标准版本",[14,82,83,84,87,88,87,91,87,94,97],{},"C++11 引入了标准线程库。C++14、C++17、C++20 又增加了 ",[44,85,86],{},"std::shared_mutex","、",[44,89,90],{},"std::jthread",[44,92,93],{},"std::latch",[44,95,96],{},"std::barrier"," 等工具。",[14,99,100],{},"本节主要使用 C++11 就有的基础工具。编译时通常需要加线程选项，例如：",[102,103,109],"pre",{"className":104,"code":106,"language":107,"meta":108},[105],"language-text","g++ demo.cpp -std=c++17 -pthread\n","text","",[44,110,106],{"__ignoreMap":108},[10,112,113],{"id":113},"常用工具",[115,116,117,134],"table",{},[118,119,120],"thead",{},[121,122,123,128,131],"tr",{},[124,125,127],"th",{"align":126},"left","工具",[124,129,130],{"align":126},"作用",[124,132,133],{"align":126},"常见头文件",[135,136,137,152,169,183,196,210,224],"tbody",{},[121,138,139,144,147],{},[140,141,142],"td",{"align":126},[44,143,46],{},[140,145,146],{"align":126},"创建和管理线程",[140,148,149],{"align":126},[44,150,151],{},"\u003Cthread>",[121,153,154,159,162],{},[140,155,156],{"align":126},[44,157,158],{},"std::this_thread::sleep_for",[140,160,161],{"align":126},"当前线程休眠一段时间",[140,163,164,87,166],{"align":126},[44,165,151],{},[44,167,168],{},"\u003Cchrono>",[121,170,171,175,178],{},[140,172,173],{"align":126},[44,174,56],{},[140,176,177],{"align":126},"互斥锁，保护共享数据",[140,179,180],{"align":126},[44,181,182],{},"\u003Cmutex>",[121,184,185,189,192],{},[140,186,187],{"align":126},[44,188,60],{},[140,190,191],{"align":126},"RAII 加锁，作用域结束自动解锁",[140,193,194],{"align":126},[44,195,182],{},[121,197,198,203,206],{},[140,199,200],{"align":126},[44,201,202],{},"std::unique_lock",[140,204,205],{"align":126},"更灵活的 RAII 锁，常配合条件变量",[140,207,208],{"align":126},[44,209,182],{},[121,211,212,216,219],{},[140,213,214],{"align":126},[44,215,66],{},[140,217,218],{"align":126},"原子变量，适合简单计数",[140,220,221],{"align":126},[44,222,223],{},"\u003Catomic>",[121,225,226,230,233],{},[140,227,228],{"align":126},[44,229,72],{},[140,231,232],{"align":126},"等待和通知",[140,234,235],{"align":126},[44,236,237],{},"\u003Ccondition_variable>",[10,239,240],{"id":240},"并发和并行",[115,242,243,256],{},[118,244,245],{},[121,246,247,250,253],{},[124,248,249],{"align":126},"概念",[124,251,252],{"align":126},"含义",[124,254,255],{"align":126},"例子",[135,257,258,269],{},[121,259,260,263,266],{},[140,261,262],{"align":126},"并发",[140,264,265],{"align":126},"多个任务在同一段时间内推进",[140,267,268],{"align":126},"一个程序同时等待网络、定时器和用户输入",[121,270,271,274,277],{},[140,272,273],{"align":126},"并行",[140,275,276],{"align":126},"多个任务真的同时运行",[140,278,279],{"align":126},"多核 CPU 上多个线程同时计算",[14,281,282],{},"初学时先抓住工程直觉：多个任务都要等待外设、网络、定时器或耗时计算时，让它们同时推进，程序整体会更快或响应更好。",[10,284,285],{"id":285},"使用建议",[287,288,289,292,295,306,309,319],"ol",{},[21,290,291],{},"先保证正确，再考虑性能。",[21,293,294],{},"能不共享数据就不共享数据，每个线程处理自己的数据最简单。",[21,296,297,298,301,302,305],{},"共享数据优先用 ",[44,299,300],{},"mutex"," 保护，简单计数才考虑 ",[44,303,304],{},"atomic","。",[21,307,308],{},"锁的作用域尽量小，避免长时间持锁。",[21,310,311,312,315,316,318],{},"初学阶段少用 ",[44,313,314],{},"detach()","，优先用 ",[44,317,50],{}," 明确等待线程结束。",[21,320,321,322,324,325,327],{},"C++20 项目可以了解 ",[44,323,90],{},"，它析构时会自动请求停止并 join，比 ",[44,326,46],{}," 更安全。",[10,329,330],{"id":330},"工程拓展",[14,332,333,334,337],{},"在 ROS2 中，多线程回调执行器、回调组和共享状态保护都会涉及线程与锁。在 Boost.Asio 中，多个异步任务可能运行在同一个 ",[44,335,336],{},"io_context"," 或线程池里，也要考虑回调之间的共享数据。学好 C++ 标准库并发工具，再看这些工程库会轻松很多。",{"title":108,"searchDepth":339,"depth":339,"links":340},2,[341,342,343,344,345,346,347],{"id":12,"depth":339,"text":12},{"id":35,"depth":339,"text":35},{"id":79,"depth":339,"text":80},{"id":113,"depth":339,"text":113},{"id":240,"depth":339,"text":240},{"id":285,"depth":339,"text":285},{"id":330,"depth":339,"text":330},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","18.19",18190000,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程",false,true,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","zh-CN","zh-cn",{},{"title":5,"description":108},1,"4MEgDe7lCPlU2AtvUhEtVY7AfQJEYzWTbC1qmiBNe_w",[369,375,381,387,393,399,405,411,417,423,429,435,441,447,453,459,465,471,477,483,489,495,501,507,513,519,525,531,537,543,549,555,561,567,573,579,584,590,591,597,603,609,615,621,627,633,639,645,651,657,663,669,675,681,687,693,699,705,711,717,723,729,735,741,747,753,759,765,771,777],{"path":370,"stem":371,"title":372,"date":351,"chapter":373,"chapterSort":374,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识","1",1000000,{"path":376,"stem":377,"title":378,"date":351,"chapter":379,"chapterSort":380,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期","10",10000000,{"path":382,"stem":383,"title":384,"date":351,"chapter":385,"chapterSort":386,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":388,"stem":389,"title":390,"date":351,"chapter":391,"chapterSort":392,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":394,"stem":395,"title":396,"date":351,"chapter":397,"chapterSort":398,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":400,"stem":401,"title":402,"date":351,"chapter":403,"chapterSort":404,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":406,"stem":407,"title":408,"date":351,"chapter":409,"chapterSort":410,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":412,"stem":413,"title":414,"date":351,"chapter":415,"chapterSort":416,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":418,"stem":419,"title":420,"date":351,"chapter":421,"chapterSort":422,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":424,"stem":425,"title":426,"date":351,"chapter":427,"chapterSort":428,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":430,"stem":431,"title":432,"date":351,"chapter":433,"chapterSort":434,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":436,"stem":437,"title":438,"date":351,"chapter":439,"chapterSort":440,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":442,"stem":443,"title":444,"date":351,"chapter":445,"chapterSort":446,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":448,"stem":449,"title":450,"date":351,"chapter":451,"chapterSort":452,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":454,"stem":455,"title":456,"date":351,"chapter":457,"chapterSort":458,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":460,"stem":461,"title":462,"date":351,"chapter":463,"chapterSort":464,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":466,"stem":467,"title":468,"date":351,"chapter":469,"chapterSort":470,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":472,"stem":473,"title":474,"date":351,"chapter":475,"chapterSort":476,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":478,"stem":479,"title":480,"date":351,"chapter":481,"chapterSort":482,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":484,"stem":485,"title":486,"date":351,"chapter":487,"chapterSort":488,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":490,"stem":491,"title":492,"date":351,"chapter":493,"chapterSort":494,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":496,"stem":497,"title":498,"date":351,"chapter":499,"chapterSort":500,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":502,"stem":503,"title":504,"date":351,"chapter":505,"chapterSort":506,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":508,"stem":509,"title":510,"date":351,"chapter":511,"chapterSort":512,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","auto","18.1",18010000,{"path":514,"stem":515,"title":516,"date":351,"chapter":517,"chapterSort":518,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":520,"stem":521,"title":522,"date":351,"chapter":523,"chapterSort":524,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":526,"stem":527,"title":528,"date":351,"chapter":529,"chapterSort":530,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","std::function","18.12",18120000,{"path":532,"stem":533,"title":534,"date":351,"chapter":535,"chapterSort":536,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","std::bind","18.13",18130000,{"path":538,"stem":539,"title":540,"date":351,"chapter":541,"chapterSort":542,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","std::optional","18.14",18140000,{"path":544,"stem":545,"title":546,"date":351,"chapter":547,"chapterSort":548,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","std::variant","18.15",18150000,{"path":550,"stem":551,"title":552,"date":351,"chapter":553,"chapterSort":554,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","std::span","18.16",18160000,{"path":556,"stem":557,"title":558,"date":351,"chapter":559,"chapterSort":560,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":562,"stem":563,"title":564,"date":351,"chapter":565,"chapterSort":566,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","std::chrono","18.18",18180000,{"path":568,"stem":569,"title":570,"date":351,"chapter":571,"chapterSort":572,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":574,"stem":575,"title":576,"date":351,"chapter":577,"chapterSort":578,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":580,"stem":581,"title":66,"date":351,"chapter":582,"chapterSort":583,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic","18.19.3",18190300,{"path":585,"stem":586,"title":587,"date":351,"chapter":588,"chapterSort":589,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":348,"stem":357,"title":5,"date":351,"chapter":349,"chapterSort":350,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},{"path":592,"stem":593,"title":594,"date":351,"chapter":595,"chapterSort":596,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","nullptr","18.2",18020000,{"path":598,"stem":599,"title":600,"date":351,"chapter":601,"chapterSort":602,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","std::filesystem","18.20",18200000,{"path":604,"stem":605,"title":606,"date":351,"chapter":607,"chapterSort":608,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":610,"stem":611,"title":612,"date":351,"chapter":613,"chapterSort":614,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","using","18.3",18030000,{"path":616,"stem":617,"title":618,"date":351,"chapter":619,"chapterSort":620,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","enum class","18.4",18040000,{"path":622,"stem":623,"title":624,"date":351,"chapter":625,"chapterSort":626,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":628,"stem":629,"title":630,"date":351,"chapter":631,"chapterSort":632,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":634,"stem":635,"title":636,"date":351,"chapter":637,"chapterSort":638,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","constexpr","18.7",18070000,{"path":640,"stem":641,"title":642,"date":351,"chapter":643,"chapterSort":644,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":646,"stem":647,"title":648,"date":351,"chapter":649,"chapterSort":650,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":652,"stem":653,"title":654,"date":351,"chapter":655,"chapterSort":656,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":658,"stem":659,"title":660,"date":351,"chapter":661,"chapterSort":662,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":664,"stem":665,"title":666,"date":351,"chapter":667,"chapterSort":668,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":670,"stem":671,"title":672,"date":351,"chapter":673,"chapterSort":674,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":676,"stem":677,"title":678,"date":351,"chapter":679,"chapterSort":680,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":682,"stem":683,"title":684,"date":351,"chapter":685,"chapterSort":686,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":688,"stem":689,"title":690,"date":351,"chapter":691,"chapterSort":692,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":694,"stem":695,"title":696,"date":351,"chapter":697,"chapterSort":698,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":700,"stem":701,"title":702,"date":351,"chapter":703,"chapterSort":704,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":706,"stem":707,"title":708,"date":351,"chapter":709,"chapterSort":710,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":712,"stem":713,"title":714,"date":351,"chapter":715,"chapterSort":716,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":718,"stem":719,"title":720,"date":351,"chapter":721,"chapterSort":722,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":724,"stem":725,"title":726,"date":351,"chapter":727,"chapterSort":728,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":730,"stem":731,"title":732,"date":351,"chapter":733,"chapterSort":734,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放","2",2000000,{"path":736,"stem":737,"title":738,"date":351,"chapter":739,"chapterSort":740,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出","3",3000000,{"path":742,"stem":743,"title":744,"date":351,"chapter":745,"chapterSort":746,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":748,"stem":749,"title":750,"date":351,"chapter":751,"chapterSort":752,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构","5",5000000,{"path":754,"stem":755,"title":756,"date":351,"chapter":757,"chapterSort":758,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":760,"stem":761,"title":762,"date":351,"chapter":763,"chapterSort":764,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件","7",7000000,{"path":766,"stem":767,"title":768,"date":351,"chapter":769,"chapterSort":770,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":772,"stem":773,"title":774,"date":351,"chapter":775,"chapterSort":776,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":358},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体","9",9000000,{"path":354,"stem":778,"title":779,"date":351,"chapter":360,"chapterSort":780,"docKey":353,"docRoot":354,"docTitle":355,"isWikiDoc":359,"isWikiIndex":359},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":782},[783,786,789,792,795],{"path":784,"localeSlug":785,"i18nKey":357},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","en-us",{"path":787,"localeSlug":788,"i18nKey":357},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","zh-hant",{"path":790,"localeSlug":791,"i18nKey":357},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","zh-hk",{"path":793,"localeSlug":794,"i18nKey":357},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","zh-tw",{"path":348,"localeSlug":363,"i18nKey":357},[784,361,787,361,790,361,793,361,348,361],1780663037862]