这周终于搞明白了ucontext和windows fiber相关的API,给CovScript加上了fiber支持
虽然还是不好搞多线程,但至少有Coroutine后,可以在单线程上方便的处理并发任务了
在Windows上的运行结果:

在Linux上的运行结果:
具体详见: covscript/covscript at fiber (github.com)
这周终于搞明白了ucontext和windows fiber相关的API,给CovScript加上了fiber支持
虽然还是不好搞多线程,但至少有Coroutine后,可以在单线程上方便的处理并发任务了
目前测试的结果是因为加入了Swap Context相关的功能,执行性能略有下降(约%1),准备在后期版本中尝试缓解。不过个人认为还是利远大于弊
目前 3.4.2 Build 10 在 Ubuntu 22.04 上的测试结果:
纯协程上下文切换,共十个 Worker:每秒 30 亿
TCP 并发,共二十个 Worker:每秒 6.3 万
很有趣的测试结果,同样版本在 Windows 11 上的测试结果:
纯协程上下文切换,共十个 Worker:每秒 20 亿
TCP 并发,共二十个 Worker:每秒 7.5 万
可以看出,Linux 上线程切换开销更低,Windows 上 TCP 连接开销更低,似乎有点不符合认知,感觉是 ASIO 底层实现的差异问题
共同点是都很高,单线程这么高的并发量,真的很超出预期
作为对比,CovScript 的顺序执行性能分别是:
Windows 11:630 万次
Ubuntu 22.04:680 万次
需要注意的是 Ubuntu 22.04 运行在虚拟机中