GitHub - zhb1990/simple: c++20协程框架

c++20协程框架

说明

仅用于学习使用
log库修改自 spdlog ,主要是为了学习下spdlog,实际项目请使用spdlog
协程部分参考自 cppcoro 以及asio的部分内容

游戏服务器的逻辑部分一般是单线程,因此,框架中的协程只会运行在一个单线程的调度器中 如果要用于一些其他通用的地方,可以实现一个任务窃取的协程调度器。c++的协程库还有 async_simple

除了协程的调度器,还提供一个可配置线程数的线程池,用于读写数据库、读写文件、异步的ai计算、异步的寻路等
此外,还有一个线程专门用于写日志文件,一个线程对日志进行lz4压缩,一个asio网络线程,一个检查共享内存通道的线程

服务为一个独立的功能,需要继承simple::service 实现 awake(), 如果需要每几帧调用一次某个逻辑,可以重写update(),并在配置文件中设置调用的间隔interval(帧)。 服务的动态库,需要导出两个函数分别为 xxx_createxxx_release, xxx 为服务的类型名字与配置文件中的type对应。
可以参看config/test.toml

框架根据配置文件加载服务,所有的服务与协程调度器运行在同一个单线程中,由于协程并没有与服务进行绑定,因此不支持运行过程中关闭某个服务, 如果要通过替换dll来分批更新的:一个是将协程与服务进行绑定,服务退出时销毁所有绑定的协程;或者把有可能需要更新的单独放一个进程中

linux 和 mac 目前还没测试过

编译需要

vcpkg install protobuf
vcpkg install asio
vcpkg install fmt
vcpkg install kcp
vcpkg install lz4
vcpkg install openssl
vcpkg install toml11
vcpkg install gtest
vcpkg install mongo-cxx-driver[core]

可以使用命令vcpkg integrate install, 然后vs2022直接打开文件夹
或者在vs2022的开发者命令行中,使用下面的命令生成解决方案

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=XXX/vcpkg/scripts/buildsystems/vcpkg.cmake ..

运行例子

cd bin\Debug
.\executor.exe ..\..\config\test.toml

启动五子棋服务器(未完成)

.\executor.exe ..\..\config\server.toml

测试五子棋协议

.\executor.exe ..\..\config\client.toml