gpt4 book ai didi

java - JNI 调用与常规 Java 调用交错 - 执行顺序是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:37 25 4
gpt4 key购买 nike

我最近一直在试验 JNI,以便移植一些现有的 C++ 库。

作为测试的一部分,我创建了一个简单的“helloworld”程序。我在 C++ 中调用一个简单的 native 函数,它只打印消息。我对我在执行程序时观察到的一些行为有点好奇——似乎所有 native 函数消息/响应都是在 Java System.out.print 之后打印的。这是因为 native 调用是在 Java 调用之后执行的,还是我应该忽略此行为?

public static void main(String[] args) {
HelloWorld app = new HelloWorld();
System.out.println("say");
app.print();

System.out.println("what");
app.print();
}

输出看起来像这样:

say
what
hola, world !
hola, world !

原生函数如下:

Java_HelloWorld_print(JNIEnv *env, jobject obj) {
printf("hola, world !\n");
return;
}

最佳答案

Is this because native calls are executed after Java calls

不,这几乎肯定与输出在 C++ 和 Java 端的缓冲方式有关。

调用的执行顺序与您的代码中显示的顺序完全相同(Java、C++、Java、C++)。

关于java - JNI 调用与常规 Java 调用交错 - 执行顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com