首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

万字长文带你深入理解协程|业界设计和实现的决策分析

拷贝栈(Copy Stack) 每次检测到栈内存不够用时,申请一块更大的新内存,将现有的栈内存copy过去,就像std::vector那样扩展内存。...关于阻塞、非阻塞的问题,libgo是这样解决的: 为了实现协程的挂起,socket是必须被转换成非阻塞模式的,libgo在其上封装了一个状态:user_nonblock,表示用户是否主动设置过nonblock...signal linux上的signal是有着不可重入属性的,在signal处理函数中处理复杂的操作极易出现死锁,libgo提供了解决这个问题的编译参数: 其他会导致阻塞的syscall libgo还HOOK...调试 libgo作为框架级的协程库,调试机制是必不可少的。...libgo开源地址: https://github.com/yyzybb537/libgo

24110

C++20 Coroutine 性能测试 (附带和libcopplibcolibgogoroutinelinux ucontext对比)

120GB(cached)/114GB(free) CMake 3.15.2 GCC版本 9.2.0 Clang版本 9.0.0 Golang版本 1.13.1 (20190903) Boost版本(libgo...1.71.1 (20190819) libco版本 03ba1a453c266b76e1c01aa519621ef7db861500 (20190902) libcopp 1.2.1 (20191004) libgo...而 libcopp 在实际应用中是搭配上了线程安全检查和一些防止误用的状态检查的,全是atomic操作,甚至 libgo 那种加锁的线程安全的检查,性能会会受到一定影响。...2019年9月master分支 53 ns 8.3 us 120 us 5.5 us 237 ns libgo 2018年版本 with boost 197 ns 5.3 us 124 ns 2.3...boost.context 的裸调用fcontext的上下文切换,cache不miss的时候大约是30ns左右,相比起来 C++20 Coroutine 还是很有优势的,而且 C++20 Coroutine 更大的优势在于创建性能和内存占用

3.4K10

厚尾和波动集聚,哪个风险更大

但这两个因素,到底谁对市场不稳定性的影响来的更大是本文研究的重点。 本文采用代理分析的方法对这两种导致金融不稳定的因素进行分析,分析表明: 所有的金融市场都存在收益厚尾及波动集聚的现象。...波动集聚的现象导致的回撤比收益厚尾更大,所以波动集聚带来的市场不稳定性来的更严重。 如果度量厚尾和波动集聚?...我们可以看到,从绝对值来看,风险较高的资产类别,即股票比债券的降幅更大。然而,当观察相对变化时,我们发现,不同资产类别的相对变化是相似的,至少在最大回撤方面是如此。...因此,降低收益的波动性聚类对金融稳定具有更大的潜力。 从下图中可以得到五个重要的启示: 1、多样化是有效的。分散化程度较高的投资组合的平均缩水幅度小于集中投资组合。...3、波动性集群似乎是下行风险的更大驱动因素,因为没有波动性集群的替代系列的下行总是低于没有重尾的替代系列。 4、从收益序列中删除厚尾和波动集聚与只删除波动性集群的序列相比,导致最大回撤增加。

31430

跨平台协程库 - libcopp 简介

在当时 libgo 当时也算是一个比较完善的协程框架了。它做了很多语法糖,上手很简单。当时它也做了和 libco 一样的共享栈功能,但是后来作者不建议使用了,不知道是不是和我们一样的想法。...libgo 也是依赖的 boost.context, 但是当时它还没有打包一份出来自己维护,所以也算是依赖很重的框架。...boost.coroutine2 Windows/Linux/macOS等 否 很重,依赖boost 很好 很好 很好,较复杂,模拟IO回调 std/boost C++,pull/push回调模型 libgo...libgo 和 boost.coroutine2 也有这个问题,而 libco 分配的栈一般都是malloc出来的而且会复用不太会出现这种情况。...(233, 150, 122, 1)","fill":false,"yAxisID":'y-axis-2',"data":[197,124,441],"type":'line'},{"label":"libgo

3.1K10
领券