如何解决在多个进程之间共享单个 boost C++ 语言环境对象
问题在于,每次启动进程时,它都会加载一个名为 MOfiles\de_DE\LC_MESSAGES\msg.mo (.mo extension) 的 13 MB 翻译文件,大约需要 1 秒完成。每个新流程都会遭受同样的延迟,从而降低用户的整体体验。
问题:是否可以在共享内存中创建单个翻译对象,以便任何新进程都可以引用该现有对象并避免延迟?
经过一些简短的研究,我发现了一个 Boost C++ example,它在共享内存中创建了一个向量。
它是否也适用于 boost 语言环境对象?
单进程翻译文件当前加载如下
void STDCALL SetGlobalLocale(const char* domain,const char* locale,const char* path,const char* charset)
{
std::string encoding(charset);
encoding.insert(0,".");
std::string language = locale ? (locale + encoding) : "";
boost::locale::generator gen;
gen.add_messages_path(path);
gen.add_messages_domain(domain);
// Sets a single global locale for the entire process.
std::locale loc = gen(language); // SLOW!!! Takes 1 second to load. ಠ_ಠ
std::locale::global(loc);
gen.clear_paths();
gen.clear_domains();
}
并调用使用
SetGlobalLocale("msg","de_DE","../../../../MOfiles","CP1252");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。