Я не совсем уверен, что именно делает флаг threading=multi при создании boost. В документации указано:
 Causes the produced binaries to be thread-safe. This requires proper
 support in the source code itself.
 который, кажется, не очень специфичен. Означает ли это, что доступ к, например, форсированным контейнерам, обеспечивается mutexes/locks или аналогичным? Поскольку производительность моего кода имеет решающее значение, я хотел бы свести к минимуму любые ненужные мьютексы и т.д.
Дополнительная информация:
Мой код - это подключаемая DLL-библиотека, которая загружается в многопоточное стороннее приложение. Я статически связываю boost в DLL (плагину не разрешено иметь какие-либо другие зависимости, кроме стандартных DLL файлов Windows, поэтому я вынужден это сделать).
Хотя приложение многопоточное, большинство функций в моей DLL вызываются только из одного потока, и поэтому обращения к контейнерам не нужно защищать. Я явно защищаю оставшиеся места моего кода, который можно вызывать из нескольких потоков, используя boost::mutex и друзей.
Я попытался повысить уровень сборки с помощью threading=multi и threading=single, и оба они работают, но мне очень хотелось бы знать, что я здесь делаю.
