gpt4 book ai didi

java - Compact Language Detector 2 的检测方法线程安全吗?

转载 作者:行者123 更新时间:2023-12-01 17:32:24 25 4
gpt4 key购买 nike

我们正在使用Compact Language Detector 2的Java Wrapper实现.

the detect() function线程安全?

据我了解,它调用 this library function .

最佳答案

不,如果 native 代码是使用 CLD2_DYNAMIC_MODE 设置编译的,则不是线程安全的,您可以使用函数 isDataDynamic() 进行测试。

native 函数操作静态类变量kScoringtables。如果在编译时定义了 CLD2_DYNAMIC_MODE ,则此变量将被初始化为一组空表 (NULL_TABLES),并且稍后可以由其他线程加载动态数据或卸载.

kScoringtables.quadgram_obj 可能为非空 at the line 1762 null check然后在第 1777 行将 kScoringtables 地址添加到跨线程 ScoringContext 对象之前进行了更改。在这种情况下,错误的指针将传递给 ApplyHints 在第 1785 行,可能会导致第 1606 行发生不好的事情。

这将是一种非常罕见的竞争条件,但仍然有可能,并且不是线程安全的,原因与标准“惰性 getter”不是线程安全的原因相同。

要使此线程安全,您必须测试 isDataDynamic() 返回 false,或者确保 loadDataFromFileloadDataFromRawAddressunloadData 函数在执行此方法时无法由不同线程调用(或者至少在执行到第 1777 行之前...)

关于java - Compact Language Detector 2 的检测方法线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094294/

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