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