中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
交城县| 兴海县| 聂拉木县| 香格里拉县| 长乐市| 遵义县| 景洪市| 银川市| 长治县| 得荣县| 青川县| 南平市| 和硕县| 临高县| 叶城县| 高要市| 关岭| 汝城县| 磐石市| 通海县| 阜平县| 厦门市| 湖南省| 米易县| 星子县| 汤阴县| 莎车县| 华池县| 聊城市| 新河县| 偃师市| 渭南市| 苍梧县| 上杭县| 固始县| 彭山县| 武城县| 克什克腾旗| 大同市| 新宁县| 昭苏县|