我正在用 C 编写一个共享库。我知道 C 函数不是线程安全的。
我的图书馆程序看起来像,
struct lib_handle {
....
};
int lib_init(lib_handle **handle);
int lib_process(lib_handle *handle);
....
....
每个方法都有一个指向lib_handle
对象的指针。所有状态都存储在这个结构中。没有使用全局变量。
我假设如果每个线程都创建它自己的 lib_handle
实例,则多个线程可以使用库函数。由于每个线程都有自己的句柄,everythibg 应该可以工作。
我还没有验证这个假设。我想知道你们对这个设计有什么看法,你们认为我可以将我的库声明为线程安全的,因为每个线程都有自己的句柄吗?
任何帮助都会很棒!
最佳答案
这将使库线程的数据/状态安全。
但是您还必须确保您的库使用其他库中的线程安全函数,例如使用 strtok_r
而不是 strtok
。
关于c - 使 C 库线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000211/