c - 使 C 库线程安全

标签 c multithreading concurrency shared-libraries

我正在用 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/

相关文章:

java - Java 如何在幕后管理同步?不挂起锁持有者线程,或者让它持有锁,即使挂起时也是如此?

C 中的 CRC 计算

python - 与python的线程间通信: Plotting memory-consumption using separate python thread

c# - 为什么选择 System.Threading 而不是 BackgroundWorker?

Java 类作为监视器

java - Java中的构造函数同步

c - C语言中如何用0替换数组中的重复项

c - Vulkan - 同步对单个缓冲区的访问

c - 是否可以想象,严格按照C11(或以上)标准的规定,这个程序可以优化为打印hello?

multithreading - boost ASIO IO_SERVICE 实现?