Skip to content

异步I/O

调用方法

Zedio将异步I/O都封装成了一个Awaiter,所以只需要co_await语法就可以调用。同时在调用时必须保证参数的生命周期必须在其之前。

cpp
char buf[1024];
// 记住不要忘记co_await
auto ret = co_await zedio::io::send(fd, buf, sizeof(buf));
if (ret) {
    ...
} else {
     ...
}

设置超时

Zedio只支持毫秒级定时,范围为[1毫秒——64**7毫秒),如果设置了不在范围的数值,将返回错误。对于指定时间点,只能使用std::chrono::steady_clock

  • 指定时长
cpp
    auto ret = co_await zedio::io::send(fd, buf, sizeof(buf)).set_timeou_for(3s);
  • 指定时间点
cpp
    auto deadline = std::chrono::steady_clock::now() + 3s;
    auto ret = co_await zedio::io::send(fd, buf, sizeof(buf)).set_timeout_at(deadline);