1

通常你需要extern一些这样的 C API:

set_module_callback(module, some_func, func_args);

但是module需要线程安全some_func,即可能有多个线程来调用这个函数,但我不知道它是否是线程安全的,有没有办法在调用时测试它?set_module_callback

4

3 回答 3

2

线程安全是一个非常复杂的领域。您可能会从许多方面获得不安全性,即使是受到良好保护的代码也可能在与另一段代码的通信中存在漏洞。这就是为什么最好假设它some_func是不安全的并提供(例如)共享资源的关键部分。所以答案是“不”

于 2013-03-27T08:19:55.087 回答
0

如果您的应用程序是 POSIX 应用程序,您可以尝试使用Helgrind 工具进行一些并发访问检测。

但这取决于您的软件如何调用 API。因此,如果您的 API 是线程安全的,那么您将不会有一个绝对通用的答案。您只会在给定特定应用程序的情况下获得此答案。

于 2013-03-27T08:53:13.687 回答
0

我认为没有办法自动让一段代码测试另一段代码。

为了让您真正确定 ti 是线程安全的,您必须进入并查看它/分析它的作用以及可能出现副作用的位置/在需要时添加互斥锁。

于 2013-03-27T08:17:00.100 回答