命令行解析
Chapter 29. Boost.Program_options - 1.80.0
词法分析器
Lex - Writing Lexical Analyzers - 1.80.0
格式化字符串
fmtlib/fmt: A modern formatting library
std::format - cppreference.com
IPC:共享内存等
Chapter 16. Boost.Interprocess - 1.80.0
可能用到的宏
- BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
- BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
- BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS
使用组合
启用宏(方式1,通过共享内存实现同步设施):
#BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS=1000
或(方式2,通过系统API实现同步设施):
BOOST_INTERPROCESS_FORCE_NATIVE_EMULATION
#BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
#BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS=1000
建议采用方式2下的boost::interprocess::interprocess_*
、windows_shared_memory
等API。
遇到的情况
- 方式2下通过named_mutex使用对WindowsAPI封装的条件变量不起作用
- 不知道为什么
- 方式1下OwerDeadLock需要通过超时时间模拟
- 方式1下创建named_*对象有时(比如删除大量文件时)会巨慢(存在文件系统相关调用)
加载动态库
Chapter 12. Boost.DLL - 1.80.0
获取进程路径:boost::dll::program_location
获取当前代码动态库路径:boost::dll::this_line_location
进程管理
获取进程ID、环境变量
boost::this_process
创建子进程
Chapter 28. Boost.Process - 1.80.0
配置项:boost::process::windows::show
等
demangle
UnDecorateSymbolName 函数 (dbghelp.h) - Win32 apps | Microsoft Learn
demangle - 1.80.0
字符串分割等
Chapter 2. Boost String Algorithms Library - 1.80.0
时间与日期
Chapter 11. Boost.Date_Time - 1.80.0
字符串转数字
Chapter 19. Boost.Lexical_Cast 1.0 - 1.80.0
boost::conversion::try_lexical_convert
日志库
Chapter 1. Boost.Log v2 - 1.80.0
GUI
图像处理
C函数动态调用
dyncall.org - calling C functions dynamically
通信模型
ZeroMQ
zeromq/cppzmq: Header-only C++ binding for libzmq
常见错误:EFSM
数据交换
Protocol Buffers | Google Developers
Any可以用来做动态类型,里面有个type_url可以用来区分类型(注意它有前缀)。
stream
JSON
nlohmann/json: JSON for Modern C++
迫不得已,考虑编码问题:
Boost.JSON - 1.80.0
备选
GitHub - pocoproject/poco: The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
GitHub - facebook/folly: An open-source C++ library developed and used at Facebook.
GitHub - abseil/abseil-cpp: Abseil Common Libraries (C++)
GitHub - google/breakpad: Mirror of Google Breakpad project