【发布时间】:2013-02-02 08:21:51
【问题描述】:
我有一个本地库,我想在我的 Java 应用程序中使用它。多个线程将使用该库,并且多个 Java 进程也将使用同一个库。该库是用 C 编写的,我目前正在 Windows 上使用 MinGW 进行编译。我应该使用什么同步机制来同步非线程安全的本机库?
提前致谢!
【问题讨论】:
-
这在一定程度上取决于库的结构。它是完全不安全的(即没有两个同时的线程可以调用方法)还是只是不安全地并发访问相同的数据?如果是这样,公共数据是否可以封装在 Java 对象中,还是在库中保持静态?
-
这是一个非常简单的库,只提供一些功能,但必须保持状态。状态仅由调用该库的每个客户端的几个变量组成。
-
@Joachim Isaksson:并发访问不是线程安全的。客户将信息传递给图书馆,图书馆通常会为客户存储这些信息——它会跟踪客户所做的操作。所以原则上没有太多竞争条件的可能性,但是,我只是想知道使用 pthread-mutexes 是否足以在我跟踪客户端操作的哈希表中创建一个新条目。
标签: synchronization java-native-interface native-code