本帖最后由 a909254 于 2021-9-8 21:06 编辑
协程移植的CO库
- 协程是运行于线程中的轻量级调度单位。
- 协程之于线程,类似于线程之于进程。
- 一个进程中可以存在多个线程,一个线程中可以存在多个协程。
- 协程所在的线程一般被称为调度线程。
- 协程发生 io 阻塞或调用 sleep 等操作时,调度线程会挂起此协程。
- 协程挂起时,调度线程会切换到其他等待中的协程运行。
- 协程的切换是在用户态进行的,比线程间的切换更快。
协程非常适合写网络程序,可以实现同步的编程方式,不需要异步回调,大大减轻了程序员的思想负担。 co 协程库实现的是一种类似 golang 的协程,有如下特性: - 支持多线程调度,默认线程数为系统 CPU 核数。
- 共享栈,同一线程中的协程共用若干个栈(大小默认为 1MB),内存占用低,Linux 上的测试显示 1000 万协程只用了 2.8G 内存(仅供参考)。
- 协程创建后,始终在同一个线程中运行,而不会切换到其他线程。
- 各协程之间为平级关系,可以在任何地方(包括在协程中)创建新的协程。
内存池移植的mimallocmimalloc是微软最近开源的一个malloc实现,其实验数据表明相比于jemalloc、tcmalloc等实现大约快了10%。其通过将空闲块列表(Free List)进行分片(Sharding)来保证分配的内存有更好的空间的局部性,从而提升性能。在mimalloc中一共进行了4次Free List的Sharding。
如果静态编译报错:修改e/eools/link.ini extra_args=/DEFAULTLIB:SHLWAPI.LIB /LARGEADDRESSAWARE
[url=]内存池、协程、支持库.rar ...[/url]
补充内容 (2021-9-17 08:40):
第二版 协程+内存池+高性能日志支持库
https://bbs.125.la/forum.php?mod=viewthread&tid=14698742
(出处: 精易论坛)
|