原文:C++20协程解糖 - 动手实现协程2 - 实现co_await和co_return

在开始之前,我们先修复上一篇文章中的一个bug,SharedState::add finish callback中post all callbacks应当提前判断settled,否则会在未设置结果的情况下添加callback,callback也会被立即post 概述 今天我们要实现的东西包括 给schedular加上timer支持 给Future和Promise补充必要设施以支持C 协程 如果你看 ...

2020-05-22 23:19 0 617 推荐指数:

查看详情

C++20 - 动手实现3 - generator和co_yield

本期实现的功能很简单,的重头都在co_await和异步操作上,generator本身是一个很轻的东西 如果你看到这行文字,说明这篇文章被无耻的盗用了(或者你正在选中文字),请前往 cnblogs.com/pointer-smq 支持原作者,谢谢 基本结构 generator和future ...

Sun May 24 21:01:00 CST 2020 0 775
C++20 - 动手实现1 - Future和Promise

std::future和promise在C++20里面没法直接用的唯一原因就是不支持then,虽然MSVC有一个弱智版开线程阻塞实现的future.then,能then了但不保序,而且libstdc++也用不了。folly之类的库有靠谱的实现,但是功能太齐全太复杂,不适合新学习。因此我们先从弱智 ...

Sat May 16 22:36:00 CST 2020 0 649
C++20 - 细节简化版

我已经花了10分钟完全了解了C++20! 如果你看到这行文字,说明这篇文章被无耻的盗用了(或者你正在选中文字),请前往 cnblogs.com/pointer-smq 支持原作者,谢谢 这篇文章仅展示简化版的控制流,不展示coroutine_handle和各种awaitable的内部实现 ...

Sat May 09 22:50:00 CST 2020 0 733
C++20

C++20 简介 ​ C++20只是提供机制,而不是提供库。C++20是无栈,无栈是一个可以挂起/恢复的特殊函数,是函数调用的泛化,且只能被线程调用,本身并不抢占内核调度。 ​ C++20 提供了三个新关键字(co_awaitco ...

Sun Apr 17 00:24:00 CST 2022 0 1560
C++20 - 调用流程和一些细节

本文的前置知识:你至少要知道其他语言的无栈是如何实现的,如C#,python。lua不算,lua实际上是有栈(对lua虚拟机有栈) 如果你看到这行文字,说明这篇文章被无耻的盗用了(或者你正在选中文字),请前往 cnblogs.com/pointer-smq 支持原作者,谢谢 编译时 ...

Sun May 10 23:38:00 CST 2020 0 655
async/await 实现

2. 基本了解 在了解异步程之前,我们首先得了解一些基础概念,如阻塞和非阻塞、同步和异步、多进程和协。 2.1 阻塞 阻塞状态指程序未得到所需计算资源时被挂起的状态。程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的。 常见的阻塞形式有:网络 I/O ...

Wed Apr 24 16:37:00 CST 2019 0 1520
实现c

的概念就不介绍了,不清楚的同学可以自己google,windows和unix like系统本身就提供了的支持,windows下叫fiber,unix like系统下叫ucontext. 在这里重复制造轮子,一是为了更清楚了解实现,二是为了在windows和unix like系统下 ...

Tue Jun 19 19:43:00 CST 2012 21 9870
比物理线程都好用的C++20,你会用吗?

摘要:事件驱动(event driven)是一种常见的代码模型,其通常会有一个主循环(mainloop)不断的从队列中接收事件,然后分发给相应的函数/模块处理。常见使用事件驱动模型的软件包括图形用户界面(GUI),嵌入式设备软件,网络服务端等。 本文分享自华为云社区《C++20 ...

Mon May 17 18:32:00 CST 2021 4 1436
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM