我正在尝试为 Android 系统实现 native 共享库 (.so)。自然地,有些代码块需要线程安全。
我发现了 here不支持 pthreads 锁、互斥锁或条件变量。
我想知道在库级别通常使用什么来实现线程安全?
最佳答案
这如何实现取决于您是希望它在被 Java 级线程访问时是线程安全的,还是需要将 native 线程与 Java 线程同步。
有两种方法可以只同步 Java 级别的线程:
1.最简单的方法是在多线程访问的native方法中加上synchronized关键字,即
public native synchronized int sharedAccess();
2.从原生端同步:
(*env)->MonitorEnter(env, obj);
... /* synchronized block */
(*env)->MonitorExit(env, obj);
引用here关于如何将 native 线程与 Java 线程同步
关于android - Android 库中的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775260/