使C库线程安全

Nav*_*K N 5 c concurrency multithreading shared-libraries

我在C中编写一个共享库.我知道C函数不是线程安全的.

我的库例程看起来像,

struct lib_handle {
....
};

int lib_init(lib_handle **handle);
int lib_process(lib_handle *handle);
....
....
Run Code Online (Sandbox Code Playgroud)

每个方法都有一个指向lib_handle对象的指针.所有状态都存储在此结构中.没有使用全局变量.

我假设如果每个线程创建它自己的lib_handle实例,多个线程可以使用库函数.由于每个线程都有自己的句柄,因此everythibg应该可以工作.

我还没有验证这个假设.我想知道你们对这个设计有什么看法,你能说出我的库是线程安全的,因为每个线程都有它自己的句柄吗?

任何帮助都会很棒!

Roh*_*han 4

这将使库线程的数据/状态安全。

但您还必须确保您的库使用其他库中的线程安全函数,例如使用strtok_r而不是strtok.