我不完全确定threading=multi在构建boost时旗帜到底是什么.文件说:
Causes the produced binaries to be thread-safe. This requires proper
support in the source code itself.
Run Code Online (Sandbox Code Playgroud)
这似乎不是很具体.这是否意味着对例如升级容器的访问受到保护mutexes/locks或类似的保护?由于我的代码性能至关重要,我想尽量减少任何不必要的互斥量等.
更多细节:
我的代码是一个插件DLL,它被加载到一个多线程的第三方应用程序中.我静态地将boost链接到DLL(除了标准的Windows DLL之外,插件不允许有任何其他依赖项,所以我不得不这样做).
虽然应用程序是多线程的,但我的DLL中的大多数函数只能从单个线程调用,因此无需保护对容器的访问.我明确地保护我的代码的剩余位置,可以通过使用boost::mutex和朋友从多个线程调用.
我试过建设提升既threading=multi与threading=single和似乎都工作,但我真的很想知道我在这里做.
我有一个非常大的C++ ndk gradle项目,我正在导入Android Studio.每次我导入或更改构建变体时,Android Studio都会"更新符号",发布版本可能需要20分钟,调试版本大约需要5分钟.它还使用了大量的内存和CPU(我需要将默认的AS java内存设置增加到"更新符号..."阶段的默认值的4倍甚至完成.)
在命令行上运行"./gradlew installRelease"(没有AS)似乎不需要此步骤.那么"更新符号......"实际上做了什么 - 更重要的是 - 有什么方法可以禁用它.