Alvin
Alvin
> 我测了下,调用log::exit()是可以正常退出的. 但是这个方案有个问题,我这里实现的是一个插件,插件使用了coost的日志功能.主程序是其他公司的产品,没有源代码 `log::exit()`封装到你的 dll 里,供用户调用就可以了
@sdaereew 程序退出时卡住应该与之前遇到的一个坑是一样的: windows dll动态库卸载时,线程的运行时先被卸载(当时查到的资料好像是这样,没记错的话),导致线程失去作用、无法被唤醒,dll中等待线程退出的代码将永远无法响应(coost/log中是程序退出时等待写日志的线程退出,调用log::exit()会退出该线程)。 这样就能解释,为什么在调用`FreeLibrary`卸载dll前调用 `log::exit()`,程序就不会卡住。 windows上使用动态库很容易踩到这个坑,比较安全的做法是在 dll 卸载前退出所有线程。 后续可能增加一些探测性代码,若线程长时间没有反应,就不再等待
`http::Server` 内部可能有多个线程,cb 可能被多个线程调用
coost目前并未在android上测试,另外android上不支持hook,基于`libcurl`的 `http::Client` 无法使用
> double f = 3.14159265; fastring str; str
coost内部使用了专用的内存分配器,在一定程度上弥补了上述性能损失
后面有空再考虑支持
如果有企业持续赞助本项目,这些功能可以考虑做
是的,你们可以自己去催 conan、vcpkg
能找到性能瓶颈在哪里么?测试代码是怎样的?