非线程安全函数
以下函数不应从同一日志记录器对象的多个线程同时调用:
set_error_handler(log_err_handler);
logger::sinks() - 返回非线程安全的向量引用,因此不要同时修改它(例如 logger->sinks().push_back(new_sink);)
注意:此限制适用于所有类型的日志记录器("_mt" 或 "_st")。
日志记录器
要创建线程安全的日志记录器,请使用 _mt 工厂函数。
例如:
auto logger = spdlog::basic_logger_mt(...);
要创建单线程日志记录器,请使用 _st 工厂函数。
例如:
auto logger = spdlog::basic_logger_st(...);
Sinks
线程安全的 sinks:以 _mt 结尾的 sinks(例如 daily_file_sink_mt)
非线程安全的 sinks:以 _st 结尾的 sinks(例如 daily_file_sink_st)
本文介绍了在使用spdlog时如何确保线程安全性。强调了不应从多个线程同时调用非线程安全函数,如set_error_handler和logger::sinks()。建议使用_MT工厂函数创建线程安全的日志记录器,并区分线程安全(_mt)与非线程安全(_st)的sink。
642

被折叠的 条评论
为什么被折叠?



