来自不同Java线程的JNI本地调用是否被顺序化?

来自不同Java线程的JNI本地调用是否被顺序化?,第1张

概述来自不同Java线程的JNI本地调用是否被顺序化?

我正在制作windows JNI .dll。 我正在尝试确定JVM是否可以对同一个本地函数进行并发调用。 这是我写的Java代码:

public class TestThreads implements Runnable { public voID run() { MyJNIClass.f(); // Call 'native' static member function } public static voID main(String[] args) { for (int k = 0; k < 20; ++k) new Thread(new TestThreads()).run(); } }

在本地方面,函数MyJNIClass.f()是这样实现的:

#include <jni.h> #include <windows.h> #include <iostream> extern "C" { JNIEXPORT voID JNICALL Java_MyJNIClass_f(jnienv * env,jclass clazz) { std::cout << GetCurrentThreadID() << "," << GetCurrentThread() << std::endl; Sleep(500); } }

本地函数的输出表明所有调用都从相同的Win32线程运行:

5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


5196,0xfffffffe


内存屏障和atomic_t在linux上

在windows 8.1中,线程可能的最大线程数是多less?

从多个线程调用accept()

如何等待循环(C)中的两种types的事件?

如何限制进程数量?

…这些线路中的每一条都会在前一条线路后半秒钟左右popup。

因此,让本机端使用multithreading(如JVM)在本地/ DLL端创build工作线程,然后立即返回的唯一方法就是:!!

无法用文件描述符locking文件

Pythonsubprocess在windows上运行不正常

当中央资源库位于windows文件共享中时,将多个用户使用git是否安全?

PHP curl localhost在发出并发请求时很慢

* _r UNIX调用可重入(asynchronous信号安全),线程安全还是两者兼而有之?

你只有一个是为你创建的“主”的线​​程。

我怀疑你打算打电话start(); 哪个调用run(); 在新线程中,而不是重用当前线程。

我还要补充,JNI不是序列化的,可以从多个线程中调用。

总结

以上是内存溢出为你收集整理的来自不同Java线程的JNI本地调用是否被顺序化?全部内容,希望文章能够帮你解决来自不同Java线程的JNI本地调用是否被顺序化?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1284659.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存