C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- std::thread
- std::stop_token
- std::stop_source
- std::stop_callback
- std::this_thread::get_id
- std::shared_timed_mutex
- std::shared_lock
- std::lock_guard
- std::hardware_destructive_interference_size, std::hardware_constructive_interference_size
- std::counting_semaphore, std::binary_semaphore
- std::jthread
- cpp/thread/barrier
- std::future
- std::this_thread::yield
- std::this_thread::sleep_for
- std::this_thread::sleep_until
- std::mutex
- std::recursive_mutex
- std::shared_mutex
- std::timed_mutex
- std::recursive_timed_mutex
- std::scoped_lock
- std::unique_lock
- std::defer_lock_t, std::try_to_lock_t, std::adopt_lock_t
- std::lock
- std::try_lock
- std::defer_lock, std::try_to_lock, std::adopt_lock
- std::once_flag
- std::call_once
- std::condition_variable
- std::condition_variable_any
- std::notify_all_at_thread_exit
- std::cv_status
- std::latch
- std::promise
- std::shared_future
- std::packaged_task
- std::async
- std::launch
- std::future_status
- std::future_error
- std::future_category
- std::future_errc
- 注é
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå > çº¿ç¨æ¯æåº
çº¿ç¨æ¯æåº
C++ å å«çº¿ç¨ãäºæ¥ãæ¡ä»¶åéåfutureçå å»ºæ¯æã
线ç¨
线ç¨ä½¿å¾ç¨åºè½å¨æ°ä¸ªå¤ç卿 ¸å¿åæ¶æ§è¡ã
| å®ä¹äºå¤´æä»¶
<thread> | |
| (C++11) |
管çåç¬ççº¿ç¨ (ç±») |
| (C++20) |
æèªå¨åå¹¶ååæ¶æ¯æç std::thread (ç±») |
管çå½å线ç¨ç彿° | |
| å®ä¹äºå½å空é´
this_thread | |
| (C++11) |
建议å®ç°éæ°è°åº¦åæ§è¡çº¿ç¨ (彿°) |
| (C++11) |
è¿åå½å线ç¨ççº¿ç¨ id (彿°) |
| (C++11) |
使å½å线ç¨çæ§è¡åæ¢æå®çæ¶é´æ®µ (彿°) |
| (C++11) |
使å½å线ç¨çæ§è¡åæ¢ç´å°æå®çæ¶é´ç¹ (彿°) |
线ç¨åæ¶
|
(C++20 èµ·) | ||||||||
ç¼å大å°è®¿é®
| å®ä¹äºå¤´æä»¶
<new> | |
| é¿å
åå
±äº«çæå°åç§» ä¿ä½¿çå ±äº«çæå¤§åç§» (常é) | |
äºæ¥
äºæ¥ç®æ³é¿å å¤ä¸ªçº¿ç¨åæ¶è®¿é®å ±äº«èµæºãè¿ä¼é¿å æ°æ®ç«äºï¼å¹¶æä¾çº¿ç¨é´çåæ¥æ¯æã
| å®ä¹äºå¤´æä»¶
<mutex> | |
| (C++11) |
æä¾åºæ¬äºæ¥è®¾æ½ (ç±») |
| (C++11) |
æä¾äºæ¥è®¾æ½ï¼å®ç°ææ¶ééå® (ç±») |
| (C++11) |
æä¾è½è¢«åä¸çº¿ç¨éå½éå®çäºæ¥è®¾æ½ (ç±») |
| (C++11) |
æä¾è½è¢«åä¸çº¿ç¨éå½éå®çäºæ¥è®¾æ½ï¼å¹¶å®ç°ææ¶ééå® (ç±») |
| å®ä¹äºå¤´æä»¶
<shared_mutex> | |
| (C++17) |
æä¾å
±äº«äºæ¥è®¾æ½ (ç±») |
| (C++14) |
æä¾å
±äº«äºæ¥è®¾æ½å¹¶å®ç°ææ¶ééå® (ç±») |
éç¨äºæ¥ç®¡ç | |
| å®ä¹äºå¤´æä»¶
<mutex> | |
| (C++11) |
å®ç°ä¸¥æ ¼åºäºä½ç¨åçäºæ¥ä½æææå
è£
å¨ (类模æ¿) |
| (C++17) |
ç¨äºå¤ä¸ªäºæ¥ä½çå
æ»é RAII å°è£
å¨ (类模æ¿) |
| (C++11) |
å®ç°å¯ç§»å¨çäºæ¥ä½æææå
è£
å¨ (类模æ¿) |
| (C++14) |
å®ç°å¯ç§»å¨çå
±äº«äºæ¥ä½æææå°è£
å¨ (类模æ¿) |
| (C++11)(C++11)(C++11) |
ç¨äºæå®éå®çç¥çæ ç¾ç±»å (ç±») |
| (C++11)(C++11)(C++11) |
ç¨äºæå®éå®çç¥çæ ç¾å¸¸é (常é) |
éç¨éå®ç®æ³ | |
| (C++11) |
è¯å¾éè¿éå¤è°ç¨ try_lock è·å¾äºæ¥ä½çæææ (彿°æ¨¡æ¿) |
| (C++11) |
é宿å®çäºæ¥ä½ï¼è¥ä»»ä½ä¸ä¸ªä¸å¯ç¨åé»å¡ (彿°æ¨¡æ¿) |
忬¡è°ç¨ | |
| (C++11) |
ç¡®ä¿ call_once åªè°ç¨å½æ°ä¸æ¬¡ç帮å©å¯¹è±¡ (ç±») |
| (C++11) |
ä»
è°ç¨å½æ°ä¸æ¬¡ï¼å³ä½¿ä»å¤ä¸ªçº¿ç¨è°ç¨ (彿°æ¨¡æ¿) |
æ¡ä»¶åé
æ¡ä»¶å鿝å 许å¤ä¸ªçº¿ç¨ç¸äºäº¤æµç忥åè¯ãå®å 许ä¸å®éç线ç¨çå¾ ï¼å¯ä»¥å®æ¶ï¼å¦ä¸çº¿ç¨çæéï¼ç¶ååç»§ç»ãæ¡ä»¶åéå§ç»å ³èå°ä¸ä¸ªäºæ¥ã
| å®ä¹äºå¤´æä»¶
<condition_variable> | |
| (C++11) |
æä¾ä¸ std::unique_lock å
³èçæ¡ä»¶åé (ç±») |
| (C++11) |
æä¾ä¸ä»»ä½éç±»åå
³èçæ¡ä»¶åé (ç±») |
| (C++11) |
宿å°å¨æ¤çº¿ç¨å®å
¨ç»ææ¶å¯¹ notify_all çè°ç¨ (彿°) |
| (C++11) |
ååºæ¡ä»¶åéä¸å®æ¶çå¾
çå¯è½ç»æ (æä¸¾) |
ä¿¡å·éä¿¡å·é (semaphore) æ¯ä¸ç§è½»éç忥åä»¶ï¼ç¨äºå¶çº¦å¯¹å ±äº«èµæºçå¹¶å访é®ãå¨å¯ä»¥ä½¿ç¨ä¸¤è æ¶ï¼ä¿¡å·éè½æ¯æ¡ä»¶åéæ´ææçã
é©ä¸å±éé© (latch) ä¸å±é (barrier) æ¯çº¿ç¨åè°æºå¶ï¼å è®¸ä»»ä½æ°éç线ç¨é»å¡ç´è³æå¾ æ°éç线ç¨å°è¾¾è¯¥å±éãé©ä¸è½å¤ç¨ï¼å±éè½éå¤ä½¿ç¨ã
|
(C++20 èµ·) | ||||||||||||||
Future
æ ååºæä¾äºä¸äºå·¥å ·æ¥è·å弿¥ä»»å¡ï¼å³å¨åç¬ç线ç¨ä¸å¯å¨ç彿°ï¼çè¿åå¼ï¼å¹¶ææå ¶ææåºçå¼å¸¸ãè¿äºå¼å¨å ±äº«ç¶æä¸ä¼ éï¼å ¶ä¸å¼æ¥ä»»å¡å¯ä»¥åå ¥å ¶è¿å弿åå¨å¼å¸¸ï¼èä¸å¯ä»¥ç±ææè¯¥å¼ç¨è¯¥å ±äº«æç std::future æ std::shared_future å®ä¾ççº¿ç¨æ£éªãçå¾ ææ¯æä½è¿ä¸ªç¶æã
| å®ä¹äºå¤´æä»¶
<future> | |
| (C++11) |
åå¨ä¸ä¸ªå¼ä»¥è¿è¡å¼æ¥è·å (类模æ¿) |
| (C++11) |
æå
ä¸ä¸ªå½æ°ï¼åå¨å
¶è¿åå¼ä»¥è¿è¡å¼æ¥è·å (类模æ¿) |
| (C++11) |
çå¾
è¢«å¼æ¥è®¾ç½®çå¼ (类模æ¿) |
| (C++11) |
çå¾
è¢«å¼æ¥è®¾ç½®çå¼ï¼å¯è½ä¸ºå
¶ä» future æå¼ç¨ï¼ (类模æ¿) |
| (C++11) |
弿¥è¿è¡ä¸ä¸ªå½æ°ï¼æå¯è½å¨æ°çº¿ç¨ä¸æ§è¡ï¼ï¼å¹¶è¿åä¿æå
¶ç»æç std::future (彿°æ¨¡æ¿) |
| (C++11) |
æå® std::async æç¨çè¿è¡çç¥ (æä¸¾) |
| (C++11) |
æå®å¨ std::future å std::shared_future ä¸ç宿¶çå¾
çç»æ (æä¸¾) |
Future é误 | |
| (C++11) |
æ¥åä¸ future æ promise æå
³çé误 (ç±») |
| (C++11) |
é´å« future éè¯¯ç±»å« (彿°) |
| (C++11) |
é´å« future é误ç (æä¸¾) |