Я хотел бы использовать C ++ 11 thread_local
, но наше приложение встраивает JVM, и иногда методы C ++ вызываются из потока, созданного Java, через JNI. По сути, это та же проблема, как если бы внешняя библиотека «C» создала поток и перезвонила в мой код C ++. Определяется ли поведение thread_local
переменных в этих обстоятельствах? Есть ли способ, чтобы мой код компенсировал неожиданное появление постороннего потока? Как насчет уничтожения при выходе из потока?
РЕДАКТИРОВАТЬ: Факт, что C ++ вызывается из потока JVM через JNI, на самом деле не является центральной точкой. Любая чужая нить (не созданная std::thread
или main()
) будет иметь такую же проблему, предположительно.
РЕДАКТИРОВАТЬ: JVM, которая меня интересует, это реализации OpenJDK (nee Oracle) x64 в Windows и Linux (Ubuntu и RedHat)