亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c++協程使用的方法是什么

c++
小億
84
2024-06-06 09:27:24
欄目: 編程語言

在C++中,協程可以使用C++20中引入的std::coroutine庫來實現。協程使用co_await關鍵字來暫時掛起當前協程的執行,并等待另一個協程完成后再繼續執行。以下是一個簡單的使用協程的示例:

#include <iostream>
#include <coroutine>

struct task {
    struct promise_type {
        task get_return_object() {
            return task{std::coroutine_handle<promise_type>::from_promise(*this)};
        }

        std::suspend_never initial_suspend() { return {}; }
        std::suspend_always final_suspend() noexcept { return {}; }

        void return_void() {}

        void unhandled_exception() {
            std::terminate();
        }
    };

    std::coroutine_handle<promise_type> coro;

    task(std::coroutine_handle<promise_type> h) : coro(h) {}

    ~task() {
        if (coro) coro.destroy();
    }

};

task foo() {
    std::cout << "Start" << std::endl;
    co_await std::suspend_always{};
    std::cout << "End" << std::endl;
}

int main() {
    auto t = foo();
    t.coro.resume();
}

在這個示例中,我們定義了一個簡單的協程foo,在其中使用了co_await關鍵字來暫時掛起協程的執行。在main函數中,我們實例化了一個task對象t,然后手動調用了t.coro.resume()方法來啟動協程的執行。當協程執行到co_await std::suspend_always{}時,會暫時掛起協程的執行,直到調用resume()方法繼續執行。

0
元阳县| 宁蒗| 太仓市| 莱西市| 桦川县| 高雄市| 和田市| 平舆县| 乌什县| 扎兰屯市| 梁河县| 桦甸市| 榕江县| 清苑县| 南昌县| 高密市| 富蕴县| 青海省| 天津市| 玉田县| 阿尔山市| 鄂托克前旗| 西充县| 德昌县| 西安市| 普兰县| 正阳县| 阿鲁科尔沁旗| 甘谷县| 琼海市| 瑞安市| 磴口县| 重庆市| 宝丰县| 深水埗区| 平南县| 曲周县| 社旗县| 五原县| 资溪县| 鲁甸县|