gpt4 book ai didi

c++ - 如何使第三方库线程安全以用于 Boost 线程?

转载 作者:行者123 更新时间:2023-11-30 01:31:23 24 4
gpt4 key购买 nike

我使用的是第三方 C++ 库 ( OpenFst ),它并不是专门为线程安全设计的。不过,它确实有一些未使用的 Mutex 类。

现在我想调用该库中的一些函数并在 Boost 线程中运行它们。我怎样才能做到这一点?我是否只需要编写额外的 Mutex 类?

特别是,我的一些线程将使用该库中的一些数据结构,直到它们发现另一个线程已生成这些结构的更新拷贝。我是线程的新手,真的不知道从哪里开始......

最佳答案

最安全的方法是确保一次只有一个线程调用第三方库——也就是说,在每次调用库时都使用互斥锁。然而,让多个线程可以同时使用该库将非常复杂,并且需要对线程安全设计以及库本身的设计有很好的理解。

如果您审核该库并发现它根本没有全局状态(即操作一个 FST 永远不会、永远、永远不会与另一个 FST 操作相同的数据进行交互),那么使用互斥量可能是安全的个人 FST 的水平。如果有一些方法根本不修改 FST 结构,那么在多个线程中运行它们可能是安全的,前提是没有写入相同的 FST。但是,这需要仔细审核 OpenFST 代码。我建议在这里与原始 OpenFST 开发人员合作;他们应该能够帮助指出潜在的陷阱和线程问题。

关于c++ - 如何使第三方库线程安全以用于 Boost 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125098/

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