Coke(八):与C++ Workflow灵活地交互
迄今为止,Coke通过七篇文章愉快地讨论了所有的基础组件,熟悉C++ Workflow的小伙伴可以很清楚地看出这些组件与Workflow的基础任务一一对应,通过自由地组合这些基础组件,便可以实现各种绚丽多彩的复杂任务了。这时候就有骑电动车的读者要问了:“你这哪儿够十五斤哪?你这实现有问题呀”。 没错,与Workflow相比,Coke仅实现了一小部分功能,目前的文章中尚未涉及域名解析、服务治理、自定 …
迄今为止,Coke通过七篇文章愉快地讨论了所有的基础组件,熟悉C++ Workflow的小伙伴可以很清楚地看出这些组件与Workflow的基础任务一一对应,通过自由地组合这些基础组件,便可以实现各种绚丽多彩的复杂任务了。这时候就有骑电动车的读者要问了:“你这哪儿够十五斤哪?你这实现有问题呀”。 没错,与Workflow相比,Coke仅实现了一小部分功能,目前的文章中尚未涉及域名解析、服务治理、自定 …
在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。其中计数器通常用来实现功能更复杂的复合组件,coke中暂时不会有一个通用的计数器基础组件,因此本文要介绍的文件IO应当是基础组件中的最后一个了。 与C++ Workflow一样,coke提供了一组类似于pread、pwrite的文件IO接口,具体如下 相比于其他异步任务,作者 …
在C++ Workflow中有五种基础任务:通讯、计算、文件IO、定时器、计数器,在coke项目中也分别对应着一组基础组件。在前面的文章中,我们已经分享过通讯任务(以HTTP为例)、通过coke::go发起计算任务,本文主要分享一下定时器任务的使用方法。细心的读者心想:我在前面的文章看到好几次coke::sleep了,作者又来水文章了。没错,定时器任务如此简单直接,现在再不分享,以后拿出来说更显得 …
在前几篇文章中,多次用到了协程任务上的同步等待和异步等待功能,本文将对这部分内容做进一步的介绍。首先来看一个简单的例子 在这个例子中,main是我们经常会见到的C++函数,而hello则是一个协程,在C++协程中,使用co_await来实现对可等待体的异步等待。在hello协程中,先展示了如何使用co_await异步等待prepare协程并获取其返回值,然后再输出Hello world。 coke …
作为C++协程框架,Coke当然可以优雅地发起计算任务,我们以“计算一组数据的和”为例,先直观地了解一下发起计算任务的方式。 创建计算任务就是如此简洁,只需要向coke::go传入可调用对象和参数就可以了。但由于C++中有模板和函数重载,当函数声明比较复杂的时候,使用起来会比较晦涩。此时若恰好在协程上下文中,可以通过coke::switch_go_thread()切换到计算线程,然后直接调用函数就 …