最近發(fā)布的 GCC 10 編譯器已對(duì) C++20 的主要功能協(xié)程(Co-Routines)進(jìn)行了初始支持证膨,但是除非顯式地開(kāi)啟該選項(xiàng)鼓黔,否則并不會(huì)啟用此功能央勒。
當(dāng) GCC 10 在 C++20 模式(std=c++20) 中運(yùn)行時(shí),默認(rèn)情況下會(huì)啟用 C++ 協(xié)程澳化。而將于明年發(fā)布的 GCC 11 在 C++20 推出時(shí)將具有協(xié)程功能崔步,到那時(shí),GNU 編譯器集合中支持 C++20 的剩余部分也應(yīng)該會(huì)被解決肆捕。
協(xié)程(Coroutines)是 C++20 的主要功能之一眼虱,它允許某個(gè)函數(shù)在暫停執(zhí)行之后再恢復(fù)捏悬。有關(guān) C++ 協(xié)程的示例語(yǔ)法和更多詳細(xì)信息請(qǐng)?jiān)?cppreference.com 上查看润梯。可以看到寇钉,官方對(duì)協(xié)程的定義是:
A coroutine is a function that can suspend execution to be resumed later.
協(xié)程是能暫停執(zhí)行以在之后恢復(fù)的函數(shù)。
與 concepts, modules, spaceship operator 和內(nèi)存模型改進(jìn)等一起共同構(gòu)成 C++20 的主要特性竟纳。
C++20 標(biāo)準(zhǔn)在今年年初確定了技術(shù)規(guī)范后撵溃,將于近期正式發(fā)布缘挑。GCC 10 已經(jīng)配備了 C++20 的大部分內(nèi)容,而對(duì)于 GCC 11 來(lái)說(shuō)诲宇,其余的項(xiàng)目很有可能將會(huì)被解決焕窝,包括像上周看到的為 std=c++20?啟用協(xié)程的更改。
在 C++ 標(biāo)準(zhǔn)的狀態(tài)頁(yè)面上溯泣,仍有面向 GCC 的 C++20 功能處于開(kāi)發(fā)階段榕茧。如果想知道 LLVM Clang 上的 C++20 狀態(tài),可查看此頁(yè)面:https://clang.llvm.org/cxx_status.html