Android库中的线程安全性

sun*_*die 10 android shared-libraries thread-safety bionic android-library

我正在尝试为Android系统实现本机共享库(.so).当然,有些代码块需要是线程安全的.

我在这里发现不支持pthreads锁,互斥锁或条件变量.

我想知道图书馆级别通常使用什么来实现线程安全?

Kai*_*Kai 4

如何实现这一点取决于您是否只是希望它在被 Java 级线程访问时是线程安全的,或者您需要将本机线程与 Java 线程同步。

有两种方法可以仅同步 Java 级别的线程:

1.最简单的方法是在多线程访问的native方法中添加synchronized关键字,即

public native synchronized int sharedAccess();
Run Code Online (Sandbox Code Playgroud)

2.本机端同步:

(*env)->MonitorEnter(env, obj);
...                      /* synchronized block */
(*env)->MonitorExit(env, obj);
Run Code Online (Sandbox Code Playgroud)

有关如何将本机线程与 Java 线程同步的信息,请参阅此处