CO 2.0.1 发布,增加更多 golang 特性

栏目: 软件资讯 · 发布时间: 4年前

内容简介:GitHub https://github.com/idealvin/co 参考文档 中文: [github](https://idealvin.github.io/cn/about/co/) [gitee](https://idealvin.gitee.io/cn/about/co/) English: [github](https://idealvin.github.io/...

GitHub

参考文档

  • 中文: [github](https://idealvin.github.io/cn/about/co/) [gitee](https://idealvin.gitee.io/cn/about/co/)

  • English: [github](https://idealvin.github.io/en/about/co/) [gitee](https://idealvin.gitee.io/en/about/co/)

新特性

  • xrepo
sh
xrepo install -f "openssl=true,libcurl=true" co

 

  • vcpkg
sh
vcpkg install co:x64-windows
 
# http & ssl support
vcpkg install co[libcurl,openssl]:x64-windows

 

  • defer (类似于 golang 中的 defer)
cpp
#include "co/defer.h"
Timer t;
defer(LOG << "time elapse: " << t.us() << "us");

 

  • channel (类似于 golang 中的 channel)
cpp
#include "co/co.h"
 
DEF_main(argc, argv) {
    co::Chan<int> ch;
    go([ch]() {
        ch << 7;
    });
 
    int v = 0;
    ch >> v;
    LOG << "v: "<< v;
 
    return 0;
}

 

  • waitgroup (类似于 golang 中的 sync.WaitGroup)
cpp
#include "co/co.h"
 
DEF_main(argc, argv) {
    FLG_cout = true;
 
    co::WaitGroup wg;
    wg.add(8);
 
    for (int i = 0; i <8; ++i) {
        go([wg]() {
            LOG << "co: "<< co::coroutine_id();
            wg.done();
        });
    }
 
    wg.wait();
    return 0;
}

 

  • 协程在 windows 平台支持 hook。
  • 在指定调度线程中创建协程。
cpp
auto s = co::next_scheduler();
s->go(f1);
s->go(f2);
  • 在所有调度线程中创建协程。
cpp
auto& s = co::all_schedulers();
for (size_t i = 0; i <s.size(); ++i) {
    s[i]->go(f);
}
  • 增加 `void flag::init(const fastring& path);`

改变

  • 全局的 `Closure` 改为 `co::Closure`.
  • 改进 `co::Event`, 可以在协程及非协程中使用, 支持拷贝构造、lambda 中按值捕获.
  • 改进 `co::Mutex``co::Pool`, 支持拷贝构造、lambda 中按值捕获.
  • 改进 `co::close()`, 可以在任何地方调用.
  • 部分支持 mingw, 协程相关特性暂时不能在 mingw 上运行.

问题修复

  •  修复 `fs::file` 读写超过 4G 长度数据的 bug.
  •  修复 http::Client 连接超时时的错误信息.
  •  修复 #165 中的链接问题.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js开发实战

Node.js开发实战

[美] Jim R. Wilson / 梅晴光、杜万智、陈琳、纪清华、段鹏飞 / 华中科技大学出版社 / 2018-11-10 / 99.90元

2018年美国亚马逊书店排名第一的Node.js开发教程。 . Node.js是基于Chrome V8引擎的JavaScript运行环境,它采用事件驱动、非阻塞式I/O模型,具有轻量、高效的特点。Node.j s 工作在前端代码与 数据存储层之间,能够提高web应用的工作效率和 响应速度。本书以最新版Node.js 8为基础,从实际案例出发 讲解Node.js的核心工作原理和实用开发技......一起来看看 《Node.js开发实战》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具