1

我想知道 ICU 库中的 ucnv_convertEx 是否是线程安全的。从源代码来看,它似乎是线程安全的,但我不是 100% 确定。我也无法在 ICU 文档中找到明确的状态。

谢谢

4

2 回答 2

2

ICU用户指南针对所有具有打开/关闭模型的对象讨论了这一点。每个 Converter 对象必须一次在单个线程中使用。如果您需要更多,请克隆它们。它们的克隆成本很低。

顺便说一句,你会从哪里得到这些信息?也许你可以提交一张票,我们可以改进文档。谢谢。

于 2011-02-02T18:44:53.483 回答
1

基本上ICU是线程安全的,但是:

  1. 您不能假设从不同线程调用对同一对象进行操作的 const 成员函数/函数是安全的(实际上这通常是不安全的,这使得 ICU 在所有线程相关方面都很棘手)
  2. 当然,您不能将相同的对象与非成本成员函数/函数一起用于来自不同线程的对象。

基本上,ucnv_convertEx只要您不在线程之间共享 UConverter,它就是安全的。

于 2011-02-02T18:56:58.490 回答