[{"data":1,"prerenderedAt":1709},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable":1287,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable":1693,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable":1708},{"id":4,"title":5,"body":6,"canonicalPath":1269,"chapterDepth":69,"chapterOrder":1270,"date":1271,"description":51,"docI18nKey":1272,"docKey":1273,"docRoot":1274,"docTitle":1275,"extension":1276,"i18nKey":1277,"isBlogPost":1278,"isWikiDoc":112,"isWikiIndex":1278,"layout":1279,"legacyPath":1279,"locale":1280,"localeSlug":1281,"meta":1282,"navigation":112,"path":1269,"seo":1283,"sourcePath":1284,"sourceStem":1277,"stem":1285,"wikiDepth":58,"__hash__":1286},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable.md","condition_variable",{"type":7,"value":8,"toc":1260},"minimark",[9,14,22,25,36,40,45,838,844,852,858,862,871,1179,1185,1191,1195,1220,1224,1256],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17,21],"p",{},[18,19,20],"code",{},"std::condition_variable"," is used for \"one thread waits on a condition variable, and another thread changes the condition and notifies.\"",[15,23,24],{},"A typical example is the producer-consumer pattern: producers put data into a queue, consumers wait when there is no data, and are woken up once data becomes available.",[15,26,27,28,31,32,35],{},"Condition variables are usually used with ",[18,29,30],{},"std::unique_lock\u003Cstd::mutex>"," because ",[18,33,34],{},"wait()"," need to temporarily release the lock while waiting and reacquire it once woken up.",[10,37,39],{"id":38},"example-code","Example code",[41,42,44],"h3",{"id":43},"example-1-producer-consumer","Example 1: Producer-Consumer",[46,47,52],"pre",{"className":48,"code":49,"language":50,"meta":51,"style":51},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Cchrono>\n#include \u003Ccondition_variable>\n#include \u003Ciostream>\n#include \u003Cmutex>\n#include \u003Cqueue>\n#include \u003Cthread>\n\nstd::queue\u003Cint> data_queue;\n\u002F\u002F 加锁用来保护共享数据，避免多个线程同时修改造成数据竞争。\nstd::mutex queue_mutex;\nstd::condition_variable queue_cv;\nbool finished = false;\n\nvoid producer()\n{\n    for (int value = 1; value \u003C= 3; ++value)\n    {\n        {\n            std::lock_guard\u003Cstd::mutex> lock(queue_mutex);\n            data_queue.push(value);\n            std::cout \u003C\u003C \"produced \" \u003C\u003C value \u003C\u003C \"\\n\";\n        }\n\n        queue_cv.notify_one();\n        std::this_thread::sleep_for(std::chrono::milliseconds(50));\n    }\n\n    {\n        std::lock_guard\u003Cstd::mutex> lock(queue_mutex);\n        finished = true;\n    }\n    queue_cv.notify_one();\n}\n\nvoid consumer()\n{\n    while (true)\n    {\n        std::unique_lock\u003Cstd::mutex> lock(queue_mutex);\n        queue_cv.wait(lock, [] {\n            return !data_queue.empty() || finished;\n        });\n\n        while (!data_queue.empty())\n        {\n            int value = data_queue.front();\n            data_queue.pop();\n\n            lock.unlock();\n            std::cout \u003C\u003C \"consumed \" \u003C\u003C value \u003C\u003C \"\\n\";\n            lock.lock();\n        }\n\n        if (finished)\n        {\n            break;\n        }\n    }\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread p(producer);\n    std::thread c(consumer);\n\n    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n    p.join();\n    c.join();\n\n    std::cout \u003C\u003C \"all done\\n\";\n\n    return 0;\n}\n","cpp","",[18,53,54,67,75,83,91,99,107,114,131,138,146,154,173,178,190,196,234,240,246,272,284,316,322,327,339,379,385,390,395,414,427,432,442,448,453,463,468,482,487,507,518,542,548,553,571,576,594,604,609,620,646,656,661,666,675,680,688,693,698,703,708,718,723,729,735,749,762,767,773,784,794,799,817,822,833],{"__ignoreMap":51},[55,56,59,63],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"szBVR","#include",[55,64,66],{"class":65},"sZZnC"," \u003Cchrono>\n",[55,68,70,72],{"class":57,"line":69},2,[55,71,62],{"class":61},[55,73,74],{"class":65}," \u003Ccondition_variable>\n",[55,76,78,80],{"class":57,"line":77},3,[55,79,62],{"class":61},[55,81,82],{"class":65}," \u003Ciostream>\n",[55,84,86,88],{"class":57,"line":85},4,[55,87,62],{"class":61},[55,89,90],{"class":65}," \u003Cmutex>\n",[55,92,94,96],{"class":57,"line":93},5,[55,95,62],{"class":61},[55,97,98],{"class":65}," \u003Cqueue>\n",[55,100,102,104],{"class":57,"line":101},6,[55,103,62],{"class":61},[55,105,106],{"class":65}," \u003Cthread>\n",[55,108,110],{"class":57,"line":109},7,[55,111,113],{"emptyLinePlaceholder":112},true,"\n",[55,115,117,121,125,128],{"class":57,"line":116},8,[55,118,120],{"class":119},"sScJk","std",[55,122,124],{"class":123},"sVt8B","::queue",[55,126,127],{"class":61},"\u003Cint>",[55,129,130],{"class":123}," data_queue;\n",[55,132,134],{"class":57,"line":133},9,[55,135,137],{"class":136},"sJ8bj","\u002F\u002F 加锁用来保护共享数据，避免多个线程同时修改造成数据竞争。\n",[55,139,141,143],{"class":57,"line":140},10,[55,142,120],{"class":119},[55,144,145],{"class":123},"::mutex queue_mutex;\n",[55,147,149,151],{"class":57,"line":148},11,[55,150,120],{"class":119},[55,152,153],{"class":123},"::condition_variable queue_cv;\n",[55,155,157,160,163,166,170],{"class":57,"line":156},12,[55,158,159],{"class":61},"bool",[55,161,162],{"class":123}," finished ",[55,164,165],{"class":61},"=",[55,167,169],{"class":168},"sj4cs"," false",[55,171,172],{"class":123},";\n",[55,174,176],{"class":57,"line":175},13,[55,177,113],{"emptyLinePlaceholder":112},[55,179,181,184,187],{"class":57,"line":180},14,[55,182,183],{"class":61},"void",[55,185,186],{"class":119}," producer",[55,188,189],{"class":123},"()\n",[55,191,193],{"class":57,"line":192},15,[55,194,195],{"class":123},"{\n",[55,197,199,202,205,208,211,213,216,219,222,225,228,231],{"class":57,"line":198},16,[55,200,201],{"class":61},"    for",[55,203,204],{"class":123}," (",[55,206,207],{"class":61},"int",[55,209,210],{"class":123}," value ",[55,212,165],{"class":61},[55,214,215],{"class":168}," 1",[55,217,218],{"class":123},"; value ",[55,220,221],{"class":61},"\u003C=",[55,223,224],{"class":168}," 3",[55,226,227],{"class":123},"; ",[55,229,230],{"class":61},"++",[55,232,233],{"class":123},"value)\n",[55,235,237],{"class":57,"line":236},17,[55,238,239],{"class":123},"    {\n",[55,241,243],{"class":57,"line":242},18,[55,244,245],{"class":123},"        {\n",[55,247,249,252,255,258,260,263,266,269],{"class":57,"line":248},19,[55,250,251],{"class":119},"            std",[55,253,254],{"class":123},"::lock_guard",[55,256,257],{"class":61},"\u003C",[55,259,120],{"class":119},[55,261,262],{"class":123},"::mutex",[55,264,265],{"class":61},">",[55,267,268],{"class":119}," lock",[55,270,271],{"class":123},"(queue_mutex);\n",[55,273,275,278,281],{"class":57,"line":274},20,[55,276,277],{"class":123},"            data_queue.",[55,279,280],{"class":119},"push",[55,282,283],{"class":123},"(value);\n",[55,285,287,289,292,295,298,301,303,305,308,311,314],{"class":57,"line":286},21,[55,288,251],{"class":119},[55,290,291],{"class":123},"::cout ",[55,293,294],{"class":61},"\u003C\u003C",[55,296,297],{"class":65}," \"produced \"",[55,299,300],{"class":61}," \u003C\u003C",[55,302,210],{"class":123},[55,304,294],{"class":61},[55,306,307],{"class":65}," \"",[55,309,310],{"class":168},"\\n",[55,312,313],{"class":65},"\"",[55,315,172],{"class":123},[55,317,319],{"class":57,"line":318},22,[55,320,321],{"class":123},"        }\n",[55,323,325],{"class":57,"line":324},23,[55,326,113],{"emptyLinePlaceholder":112},[55,328,330,333,336],{"class":57,"line":329},24,[55,331,332],{"class":123},"        queue_cv.",[55,334,335],{"class":119},"notify_one",[55,337,338],{"class":123},"();\n",[55,340,342,345,348,351,353,356,359,361,363,366,368,371,373,376],{"class":57,"line":341},25,[55,343,344],{"class":119},"        std",[55,346,347],{"class":123},"::",[55,349,350],{"class":119},"this_thread",[55,352,347],{"class":123},[55,354,355],{"class":119},"sleep_for",[55,357,358],{"class":123},"(",[55,360,120],{"class":119},[55,362,347],{"class":123},[55,364,365],{"class":119},"chrono",[55,367,347],{"class":123},[55,369,370],{"class":119},"milliseconds",[55,372,358],{"class":123},[55,374,375],{"class":168},"50",[55,377,378],{"class":123},"));\n",[55,380,382],{"class":57,"line":381},26,[55,383,384],{"class":123},"    }\n",[55,386,388],{"class":57,"line":387},27,[55,389,113],{"emptyLinePlaceholder":112},[55,391,393],{"class":57,"line":392},28,[55,394,239],{"class":123},[55,396,398,400,402,404,406,408,410,412],{"class":57,"line":397},29,[55,399,344],{"class":119},[55,401,254],{"class":123},[55,403,257],{"class":61},[55,405,120],{"class":119},[55,407,262],{"class":123},[55,409,265],{"class":61},[55,411,268],{"class":119},[55,413,271],{"class":123},[55,415,417,420,422,425],{"class":57,"line":416},30,[55,418,419],{"class":123},"        finished ",[55,421,165],{"class":61},[55,423,424],{"class":168}," true",[55,426,172],{"class":123},[55,428,430],{"class":57,"line":429},31,[55,431,384],{"class":123},[55,433,435,438,440],{"class":57,"line":434},32,[55,436,437],{"class":123},"    queue_cv.",[55,439,335],{"class":119},[55,441,338],{"class":123},[55,443,445],{"class":57,"line":444},33,[55,446,447],{"class":123},"}\n",[55,449,451],{"class":57,"line":450},34,[55,452,113],{"emptyLinePlaceholder":112},[55,454,456,458,461],{"class":57,"line":455},35,[55,457,183],{"class":61},[55,459,460],{"class":119}," consumer",[55,462,189],{"class":123},[55,464,466],{"class":57,"line":465},36,[55,467,195],{"class":123},[55,469,471,474,476,479],{"class":57,"line":470},37,[55,472,473],{"class":61},"    while",[55,475,204],{"class":123},[55,477,478],{"class":168},"true",[55,480,481],{"class":123},")\n",[55,483,485],{"class":57,"line":484},38,[55,486,239],{"class":123},[55,488,490,492,495,497,499,501,503,505],{"class":57,"line":489},39,[55,491,344],{"class":119},[55,493,494],{"class":123},"::unique_lock",[55,496,257],{"class":61},[55,498,120],{"class":119},[55,500,262],{"class":123},[55,502,265],{"class":61},[55,504,268],{"class":119},[55,506,271],{"class":123},[55,508,510,512,515],{"class":57,"line":509},40,[55,511,332],{"class":123},[55,513,514],{"class":119},"wait",[55,516,517],{"class":123},"(lock, [] {\n",[55,519,521,524,527,530,533,536,539],{"class":57,"line":520},41,[55,522,523],{"class":61},"            return",[55,525,526],{"class":61}," !",[55,528,529],{"class":123},"data_queue.",[55,531,532],{"class":119},"empty",[55,534,535],{"class":123},"() ",[55,537,538],{"class":61},"||",[55,540,541],{"class":123}," finished;\n",[55,543,545],{"class":57,"line":544},42,[55,546,547],{"class":123},"        });\n",[55,549,551],{"class":57,"line":550},43,[55,552,113],{"emptyLinePlaceholder":112},[55,554,556,559,561,564,566,568],{"class":57,"line":555},44,[55,557,558],{"class":61},"        while",[55,560,204],{"class":123},[55,562,563],{"class":61},"!",[55,565,529],{"class":123},[55,567,532],{"class":119},[55,569,570],{"class":123},"())\n",[55,572,574],{"class":57,"line":573},45,[55,575,245],{"class":123},[55,577,579,582,584,586,589,592],{"class":57,"line":578},46,[55,580,581],{"class":61},"            int",[55,583,210],{"class":123},[55,585,165],{"class":61},[55,587,588],{"class":123}," data_queue.",[55,590,591],{"class":119},"front",[55,593,338],{"class":123},[55,595,597,599,602],{"class":57,"line":596},47,[55,598,277],{"class":123},[55,600,601],{"class":119},"pop",[55,603,338],{"class":123},[55,605,607],{"class":57,"line":606},48,[55,608,113],{"emptyLinePlaceholder":112},[55,610,612,615,618],{"class":57,"line":611},49,[55,613,614],{"class":123},"            lock.",[55,616,617],{"class":119},"unlock",[55,619,338],{"class":123},[55,621,623,625,627,629,632,634,636,638,640,642,644],{"class":57,"line":622},50,[55,624,251],{"class":119},[55,626,291],{"class":123},[55,628,294],{"class":61},[55,630,631],{"class":65}," \"consumed \"",[55,633,300],{"class":61},[55,635,210],{"class":123},[55,637,294],{"class":61},[55,639,307],{"class":65},[55,641,310],{"class":168},[55,643,313],{"class":65},[55,645,172],{"class":123},[55,647,649,651,654],{"class":57,"line":648},51,[55,650,614],{"class":123},[55,652,653],{"class":119},"lock",[55,655,338],{"class":123},[55,657,659],{"class":57,"line":658},52,[55,660,321],{"class":123},[55,662,664],{"class":57,"line":663},53,[55,665,113],{"emptyLinePlaceholder":112},[55,667,669,672],{"class":57,"line":668},54,[55,670,671],{"class":61},"        if",[55,673,674],{"class":123}," (finished)\n",[55,676,678],{"class":57,"line":677},55,[55,679,245],{"class":123},[55,681,683,686],{"class":57,"line":682},56,[55,684,685],{"class":61},"            break",[55,687,172],{"class":123},[55,689,691],{"class":57,"line":690},57,[55,692,321],{"class":123},[55,694,696],{"class":57,"line":695},58,[55,697,384],{"class":123},[55,699,701],{"class":57,"line":700},59,[55,702,447],{"class":123},[55,704,706],{"class":57,"line":705},60,[55,707,113],{"emptyLinePlaceholder":112},[55,709,711,713,716],{"class":57,"line":710},61,[55,712,207],{"class":61},[55,714,715],{"class":119}," main",[55,717,189],{"class":123},[55,719,721],{"class":57,"line":720},62,[55,722,195],{"class":123},[55,724,726],{"class":57,"line":725},63,[55,727,728],{"class":136},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[55,730,732],{"class":57,"line":731},64,[55,733,734],{"class":136},"    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n",[55,736,738,741,744,746],{"class":57,"line":737},65,[55,739,740],{"class":119},"    std",[55,742,743],{"class":123},"::thread ",[55,745,15],{"class":119},[55,747,748],{"class":123},"(producer);\n",[55,750,752,754,756,759],{"class":57,"line":751},66,[55,753,740],{"class":119},[55,755,743],{"class":123},[55,757,758],{"class":119},"c",[55,760,761],{"class":123},"(consumer);\n",[55,763,765],{"class":57,"line":764},67,[55,766,113],{"emptyLinePlaceholder":112},[55,768,770],{"class":57,"line":769},68,[55,771,772],{"class":136},"    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n",[55,774,776,779,782],{"class":57,"line":775},69,[55,777,778],{"class":123},"    p.",[55,780,781],{"class":119},"join",[55,783,338],{"class":123},[55,785,787,790,792],{"class":57,"line":786},70,[55,788,789],{"class":123},"    c.",[55,791,781],{"class":119},[55,793,338],{"class":123},[55,795,797],{"class":57,"line":796},71,[55,798,113],{"emptyLinePlaceholder":112},[55,800,802,804,806,808,811,813,815],{"class":57,"line":801},72,[55,803,740],{"class":119},[55,805,291],{"class":123},[55,807,294],{"class":61},[55,809,810],{"class":65}," \"all done",[55,812,310],{"class":168},[55,814,313],{"class":65},[55,816,172],{"class":123},[55,818,820],{"class":57,"line":819},73,[55,821,113],{"emptyLinePlaceholder":112},[55,823,825,828,831],{"class":57,"line":824},74,[55,826,827],{"class":61},"    return",[55,829,830],{"class":168}," 0",[55,832,172],{"class":123},[55,834,836],{"class":57,"line":835},75,[55,837,447],{"class":123},[15,839,840],{},[841,842,843],"strong",{},"One possible outcome",[46,845,850],{"className":846,"code":848,"language":849,"meta":51},[847],"language-text","produced 1\nconsumed 1\nproduced 2\nconsumed 2\nproduced 3\nconsumed 3\nall done\n","text",[18,851,848],{"__ignoreMap":51},[15,853,854,857],{},[18,855,856],{},"queue_cv.wait(lock, 条件)"," is crucial. After a thread is awakened, it rechecks the condition to avoid logic errors caused by spurious wakeups.",[41,859,861],{"id":860},"example-2-wait-for-one-notification","Example 2: Wait for one notification",[15,863,864,865,867,868,870],{},"If it's just one thread waiting for another thread to prepare data, a condition variable can also be used. This example is shorter than producer-consumer and is suitable for first understanding the cooperation between ",[18,866,514],{}," and ",[18,869,335],{},".",[46,872,874],{"className":48,"code":873,"language":50,"meta":51,"style":51},"#include \u003Ccondition_variable>\n#include \u003Ciostream>\n#include \u003Cmutex>\n#include \u003Cstring>\n#include \u003Cthread>\n\n\u002F\u002F 加锁用来保护共享数据，避免多个线程同时修改造成数据竞争。\nstd::mutex data_mutex;\nstd::condition_variable data_cv;\nstd::string message;\nbool ready = false;\n\nvoid prepare()\n{\n    {\n        std::lock_guard\u003Cstd::mutex> lock(data_mutex);\n        message = \"hello from worker\";\n        ready = true;\n    }\n\n    data_cv.notify_one();\n}\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    \u002F\u002F 创建子线程，让这部分代码和 main 线程并发运行。\n    std::thread worker(prepare);\n\n    std::unique_lock\u003Cstd::mutex> lock(data_mutex);\n    data_cv.wait(lock, [] {\n        return ready;\n    });\n\n    std::cout \u003C\u003C message \u003C\u003C \"\\n\";\n\n    lock.unlock();\n    \u002F\u002F join 会等待子线程结束，避免 main 提前退出。\n    worker.join();\n\n    return 0;\n}\n",[18,875,876,882,888,894,901,907,911,915,922,929,936,949,953,962,966,970,989,1001,1012,1016,1020,1029,1033,1037,1045,1049,1053,1057,1069,1073,1091,1099,1107,1112,1116,1137,1141,1150,1154,1163,1167,1175],{"__ignoreMap":51},[55,877,878,880],{"class":57,"line":58},[55,879,62],{"class":61},[55,881,74],{"class":65},[55,883,884,886],{"class":57,"line":69},[55,885,62],{"class":61},[55,887,82],{"class":65},[55,889,890,892],{"class":57,"line":77},[55,891,62],{"class":61},[55,893,90],{"class":65},[55,895,896,898],{"class":57,"line":85},[55,897,62],{"class":61},[55,899,900],{"class":65}," \u003Cstring>\n",[55,902,903,905],{"class":57,"line":93},[55,904,62],{"class":61},[55,906,106],{"class":65},[55,908,909],{"class":57,"line":101},[55,910,113],{"emptyLinePlaceholder":112},[55,912,913],{"class":57,"line":109},[55,914,137],{"class":136},[55,916,917,919],{"class":57,"line":116},[55,918,120],{"class":119},[55,920,921],{"class":123},"::mutex data_mutex;\n",[55,923,924,926],{"class":57,"line":133},[55,925,120],{"class":119},[55,927,928],{"class":123},"::condition_variable data_cv;\n",[55,930,931,933],{"class":57,"line":140},[55,932,120],{"class":119},[55,934,935],{"class":123},"::string message;\n",[55,937,938,940,943,945,947],{"class":57,"line":148},[55,939,159],{"class":61},[55,941,942],{"class":123}," ready ",[55,944,165],{"class":61},[55,946,169],{"class":168},[55,948,172],{"class":123},[55,950,951],{"class":57,"line":156},[55,952,113],{"emptyLinePlaceholder":112},[55,954,955,957,960],{"class":57,"line":175},[55,956,183],{"class":61},[55,958,959],{"class":119}," prepare",[55,961,189],{"class":123},[55,963,964],{"class":57,"line":180},[55,965,195],{"class":123},[55,967,968],{"class":57,"line":192},[55,969,239],{"class":123},[55,971,972,974,976,978,980,982,984,986],{"class":57,"line":198},[55,973,344],{"class":119},[55,975,254],{"class":123},[55,977,257],{"class":61},[55,979,120],{"class":119},[55,981,262],{"class":123},[55,983,265],{"class":61},[55,985,268],{"class":119},[55,987,988],{"class":123},"(data_mutex);\n",[55,990,991,994,996,999],{"class":57,"line":236},[55,992,993],{"class":123},"        message ",[55,995,165],{"class":61},[55,997,998],{"class":65}," \"hello from worker\"",[55,1000,172],{"class":123},[55,1002,1003,1006,1008,1010],{"class":57,"line":242},[55,1004,1005],{"class":123},"        ready ",[55,1007,165],{"class":61},[55,1009,424],{"class":168},[55,1011,172],{"class":123},[55,1013,1014],{"class":57,"line":248},[55,1015,384],{"class":123},[55,1017,1018],{"class":57,"line":274},[55,1019,113],{"emptyLinePlaceholder":112},[55,1021,1022,1025,1027],{"class":57,"line":286},[55,1023,1024],{"class":123},"    data_cv.",[55,1026,335],{"class":119},[55,1028,338],{"class":123},[55,1030,1031],{"class":57,"line":318},[55,1032,447],{"class":123},[55,1034,1035],{"class":57,"line":324},[55,1036,113],{"emptyLinePlaceholder":112},[55,1038,1039,1041,1043],{"class":57,"line":329},[55,1040,207],{"class":61},[55,1042,715],{"class":119},[55,1044,189],{"class":123},[55,1046,1047],{"class":57,"line":341},[55,1048,195],{"class":123},[55,1050,1051],{"class":57,"line":381},[55,1052,728],{"class":136},[55,1054,1055],{"class":57,"line":387},[55,1056,734],{"class":136},[55,1058,1059,1061,1063,1066],{"class":57,"line":392},[55,1060,740],{"class":119},[55,1062,743],{"class":123},[55,1064,1065],{"class":119},"worker",[55,1067,1068],{"class":123},"(prepare);\n",[55,1070,1071],{"class":57,"line":397},[55,1072,113],{"emptyLinePlaceholder":112},[55,1074,1075,1077,1079,1081,1083,1085,1087,1089],{"class":57,"line":416},[55,1076,740],{"class":119},[55,1078,494],{"class":123},[55,1080,257],{"class":61},[55,1082,120],{"class":119},[55,1084,262],{"class":123},[55,1086,265],{"class":61},[55,1088,268],{"class":119},[55,1090,988],{"class":123},[55,1092,1093,1095,1097],{"class":57,"line":429},[55,1094,1024],{"class":123},[55,1096,514],{"class":119},[55,1098,517],{"class":123},[55,1100,1101,1104],{"class":57,"line":434},[55,1102,1103],{"class":61},"        return",[55,1105,1106],{"class":123}," ready;\n",[55,1108,1109],{"class":57,"line":444},[55,1110,1111],{"class":123},"    });\n",[55,1113,1114],{"class":57,"line":450},[55,1115,113],{"emptyLinePlaceholder":112},[55,1117,1118,1120,1122,1124,1127,1129,1131,1133,1135],{"class":57,"line":455},[55,1119,740],{"class":119},[55,1121,291],{"class":123},[55,1123,294],{"class":61},[55,1125,1126],{"class":123}," message ",[55,1128,294],{"class":61},[55,1130,307],{"class":65},[55,1132,310],{"class":168},[55,1134,313],{"class":65},[55,1136,172],{"class":123},[55,1138,1139],{"class":57,"line":465},[55,1140,113],{"emptyLinePlaceholder":112},[55,1142,1143,1146,1148],{"class":57,"line":470},[55,1144,1145],{"class":123},"    lock.",[55,1147,617],{"class":119},[55,1149,338],{"class":123},[55,1151,1152],{"class":57,"line":484},[55,1153,772],{"class":136},[55,1155,1156,1159,1161],{"class":57,"line":489},[55,1157,1158],{"class":123},"    worker.",[55,1160,781],{"class":119},[55,1162,338],{"class":123},[55,1164,1165],{"class":57,"line":509},[55,1166,113],{"emptyLinePlaceholder":112},[55,1168,1169,1171,1173],{"class":57,"line":520},[55,1170,827],{"class":61},[55,1172,830],{"class":168},[55,1174,172],{"class":123},[55,1176,1177],{"class":57,"line":544},[55,1178,447],{"class":123},[15,1180,1181,1184],{},[841,1182,1183],{},"Results","：",[46,1186,1189],{"className":1187,"code":1188,"language":849,"meta":51},[847],"hello from worker\n",[18,1190,1188],{"__ignoreMap":51},[10,1192,1194],{"id":1193},"common-errors","Common Errors",[1196,1197,1198,1204,1214,1217],"ol",{},[1199,1200,1201,1203],"li",{},[18,1202,34],{}," Not using condition predicates and relying only on a single wakeup can easily be affected by spurious wakeups.",[1199,1205,1206,1207,1210,1211,870],{},"After modifying the sharing conditions, you forgot ",[18,1208,1209],{},"notify_one()"," or ",[18,1212,1213],{},"notify_all()",[1199,1215,1216],{},"Performing time-consuming operations while holding the lock, preventing other threads from progressing in a timely manner.",[1199,1218,1219],{},"The condition variables, mutexes, and shared conditions are not managed within a unified logical framework.",[10,1221,1223],{"id":1222},"summary","Summary",[1225,1226,1227,1232,1240,1246,1253],"ul",{},[1199,1228,1229,1231],{},[18,1230,5],{}," is used for inter-thread waiting and notification.",[1199,1233,1234,1236,1237,870],{},[18,1235,34],{}," typically needs to be used in conjunction with ",[18,1238,1239],{},"unique_lock",[1199,1241,1242,1243,870],{},"Recommended to write ",[18,1244,1245],{},"cv.wait(lock, [] { return 条件; });",[1199,1247,1248,1249,1210,1251,870],{},"After modifying the conditions, call ",[18,1250,1209],{},[18,1252,1213],{},[1199,1254,1255],{},"Condition variables are suitable for scenarios such as producer-consumer models, task queues, and waiting for initialization completion.",[1257,1258,1259],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":51,"searchDepth":69,"depth":69,"links":1261},[1262,1263,1267,1268],{"id":12,"depth":69,"text":13},{"id":38,"depth":69,"text":39,"children":1264},[1265,1266],{"id":43,"depth":77,"text":44},{"id":860,"depth":77,"text":861},{"id":1193,"depth":69,"text":1194},{"id":1222,"depth":69,"text":1223},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","2000-1900-0400","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable",false,null,"en-US","en-us",{},{"title":5,"description":51},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","5sxpWKN_ljx1_ssVJrEAYCJz1sZ3USGe3vF_aX56Nsg",[1288,1294,1299,1304,1309,1314,1319,1324,1329,1334,1339,1344,1349,1354,1359,1364,1369,1374,1379,1384,1389,1394,1399,1404,1409,1414,1419,1424,1429,1434,1439,1444,1449,1454,1459,1464,1469,1474,1479,1484,1489,1494,1499,1504,1509,1514,1519,1524,1529,1534,1539,1544,1549,1554,1559,1564,1569,1574,1579,1580,1585,1590,1595,1600,1605,1610,1615,1620,1625,1630,1635,1640,1645,1650,1655,1660,1665,1670,1675,1680,1685,1690],{"path":1289,"stem":1290,"title":1291,"date":1271,"chapterOrder":1292,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":1295,"stem":1296,"title":1297,"date":1271,"chapterOrder":1298,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":1300,"stem":1301,"title":1302,"date":1271,"chapterOrder":1303,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":1305,"stem":1306,"title":1307,"date":1271,"chapterOrder":1308,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":1310,"stem":1311,"title":1312,"date":1271,"chapterOrder":1313,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":1315,"stem":1316,"title":1317,"date":1271,"chapterOrder":1318,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":1320,"stem":1321,"title":1322,"date":1271,"chapterOrder":1323,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":1325,"stem":1326,"title":1327,"date":1271,"chapterOrder":1328,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":1330,"stem":1331,"title":1332,"date":1271,"chapterOrder":1333,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":1335,"stem":1336,"title":1337,"date":1271,"chapterOrder":1338,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":1340,"stem":1341,"title":1342,"date":1271,"chapterOrder":1343,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":1345,"stem":1346,"title":1347,"date":1271,"chapterOrder":1348,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":1350,"stem":1351,"title":1352,"date":1271,"chapterOrder":1353,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":1355,"stem":1356,"title":1357,"date":1271,"chapterOrder":1358,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":1360,"stem":1361,"title":1362,"date":1271,"chapterOrder":1363,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":1365,"stem":1366,"title":1367,"date":1271,"chapterOrder":1368,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":1370,"stem":1371,"title":1372,"date":1271,"chapterOrder":1373,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":1375,"stem":1376,"title":1377,"date":1271,"chapterOrder":1378,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":1380,"stem":1381,"title":1382,"date":1271,"chapterOrder":1383,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":1385,"stem":1386,"title":1387,"date":1271,"chapterOrder":1388,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":1390,"stem":1391,"title":1392,"date":1271,"chapterOrder":1393,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":1395,"stem":1396,"title":1397,"date":1271,"chapterOrder":1398,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":1400,"stem":1401,"title":1402,"date":1271,"chapterOrder":1403,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":1405,"stem":1406,"title":1407,"date":1271,"chapterOrder":1408,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":1410,"stem":1411,"title":1412,"date":1271,"chapterOrder":1413,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":1415,"stem":1416,"title":1417,"date":1271,"chapterOrder":1418,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":1420,"stem":1421,"title":1422,"date":1271,"chapterOrder":1423,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":1425,"stem":1426,"title":1427,"date":1271,"chapterOrder":1428,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":1430,"stem":1431,"title":1432,"date":1271,"chapterOrder":1433,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":1435,"stem":1436,"title":1437,"date":1271,"chapterOrder":1438,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":1440,"stem":1441,"title":1442,"date":1271,"chapterOrder":1443,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":1445,"stem":1446,"title":1447,"date":1271,"chapterOrder":1448,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":1450,"stem":1451,"title":1452,"date":1271,"chapterOrder":1453,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":1455,"stem":1456,"title":1457,"date":1271,"chapterOrder":1458,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":1460,"stem":1461,"title":1462,"date":1271,"chapterOrder":1463,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":1465,"stem":1466,"title":1467,"date":1271,"chapterOrder":1468,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":1470,"stem":1471,"title":1472,"date":1271,"chapterOrder":1473,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":1475,"stem":1476,"title":1477,"date":1271,"chapterOrder":1478,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":1480,"stem":1481,"title":1482,"date":1271,"chapterOrder":1483,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":1485,"stem":1486,"title":1487,"date":1271,"chapterOrder":1488,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":1490,"stem":1491,"title":1492,"date":1271,"chapterOrder":1493,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":1495,"stem":1496,"title":1497,"date":1271,"chapterOrder":1498,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":1500,"stem":1501,"title":1502,"date":1271,"chapterOrder":1503,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":1505,"stem":1506,"title":1507,"date":1271,"chapterOrder":1508,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":1510,"stem":1511,"title":1512,"date":1271,"chapterOrder":1513,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":1515,"stem":1516,"title":1517,"date":1271,"chapterOrder":1518,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":1520,"stem":1521,"title":1522,"date":1271,"chapterOrder":1523,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":1525,"stem":1526,"title":1527,"date":1271,"chapterOrder":1528,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":1530,"stem":1531,"title":1532,"date":1271,"chapterOrder":1533,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":1535,"stem":1536,"title":1537,"date":1271,"chapterOrder":1538,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":1540,"stem":1541,"title":1542,"date":1271,"chapterOrder":1543,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":1545,"stem":1546,"title":1547,"date":1271,"chapterOrder":1548,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":1550,"stem":1551,"title":1552,"date":1271,"chapterOrder":1553,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":1555,"stem":1556,"title":1557,"date":1271,"chapterOrder":1558,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":1560,"stem":1561,"title":1562,"date":1271,"chapterOrder":1563,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":1565,"stem":1566,"title":1567,"date":1271,"chapterOrder":1568,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":1570,"stem":1571,"title":1572,"date":1271,"chapterOrder":1573,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":1575,"stem":1576,"title":1577,"date":1271,"chapterOrder":1578,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":1269,"stem":1285,"title":5,"date":1271,"chapterOrder":1270,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},{"path":1581,"stem":1582,"title":1583,"date":1271,"chapterOrder":1584,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":1586,"stem":1587,"title":1588,"date":1271,"chapterOrder":1589,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":1591,"stem":1592,"title":1593,"date":1271,"chapterOrder":1594,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":1596,"stem":1597,"title":1598,"date":1271,"chapterOrder":1599,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":1601,"stem":1602,"title":1603,"date":1271,"chapterOrder":1604,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":1606,"stem":1607,"title":1608,"date":1271,"chapterOrder":1609,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":1611,"stem":1612,"title":1613,"date":1271,"chapterOrder":1614,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":1616,"stem":1617,"title":1618,"date":1271,"chapterOrder":1619,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":1621,"stem":1622,"title":1623,"date":1271,"chapterOrder":1624,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":1626,"stem":1627,"title":1628,"date":1271,"chapterOrder":1629,"chapterDepth":69,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":1631,"stem":1632,"title":1633,"date":1271,"chapterOrder":1634,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":1636,"stem":1637,"title":1638,"date":1271,"chapterOrder":1639,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":1641,"stem":1642,"title":1643,"date":1271,"chapterOrder":1644,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":1646,"stem":1647,"title":1648,"date":1271,"chapterOrder":1649,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":1651,"stem":1652,"title":1653,"date":1271,"chapterOrder":1654,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":1656,"stem":1657,"title":1658,"date":1271,"chapterOrder":1659,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":1661,"stem":1662,"title":1663,"date":1271,"chapterOrder":1664,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":1666,"stem":1667,"title":1668,"date":1271,"chapterOrder":1669,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":1671,"stem":1672,"title":1673,"date":1271,"chapterOrder":1674,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":1676,"stem":1677,"title":1678,"date":1271,"chapterOrder":1679,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":1681,"stem":1682,"title":1683,"date":1271,"chapterOrder":1684,"chapterDepth":58,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":1686,"stem":1687,"title":1688,"date":1271,"chapterOrder":1689,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":1278},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":1274,"stem":1691,"title":1692,"date":1271,"chapterOrder":1279,"chapterDepth":1293,"docKey":1273,"docRoot":1274,"docTitle":1275,"isWikiDoc":112,"isWikiIndex":112},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":1694},[1695,1696,1699,1702,1705],{"path":1269,"localeSlug":1281,"i18nKey":1277},{"path":1697,"localeSlug":1698,"i18nKey":1277},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","zh-hant",{"path":1700,"localeSlug":1701,"i18nKey":1277},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","zh-hk",{"path":1703,"localeSlug":1704,"i18nKey":1277},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","zh-tw",{"path":1706,"localeSlug":1707,"i18nKey":1277},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","zh-cn",[1269,1284,1697,1284,1700,1284,1703,1284,1706,1284],1784646870014]