Вы можете кешировать JNIEnv? - PullRequest
3 голосов
/ 17 августа 2011

Безопасно ли кэшировать объект JNIEnv между несколькими вызовами JNI?Например, могу ли я сделать что-то вроде

void foo(JNIEnv* env)
{
    static JNIEnv* cached;
    if( ! cached )
        cached = env;

    /* use cached */
}

Конечно, код, который у меня есть, на самом деле не такой уж и глупый, но приведенный выше пример хорошо демонстрирует пример использования.

1 Ответ

4 голосов
/ 17 августа 2011

Да, вы можете, , но только в пределах одного потока. Ваш кэш не может быть таким простым, как указано выше, если только вы не уверены, что ваш собственный код будет вызываться только для одногонить.В противном случае вам нужно использовать локальное хранилище потока для хранения ваших ссылок JNIEnv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...