android和libc线程安全上的共享本机库

android和libc线程安全上的共享本机库,c,android-ndk,thread-safety,shared-libraries,bionic,C,Android Ndk,Thread Safety,Shared Libraries,Bionic,我是Android开发新手(也不是C/C++方面的专家),但我发现自己正在开发一个用C编写的本机共享库,该库应该由Android应用程序(以及其他平台)使用 现在,我开始考虑线程安全,并确定我的lib当前不是线程安全的(使用静态/全局变量)。没问题,我只从一个线程使用它 这是我真正的问题开始的地方。从互联网上的一些帖子(例如,仿生libc的某些部分(特别是stdio)似乎也不是线程安全的,至少在一些安卓版本中是如此(我们仍然针对3.0之前的版本)。现在的问题是,此应用程序/进程中使用的其他本机库

我是Android开发新手(也不是C/C++方面的专家),但我发现自己正在开发一个用C编写的本机共享库,该库应该由Android应用程序(以及其他平台)使用

现在,我开始考虑线程安全,并确定我的lib当前不是线程安全的(使用静态/全局变量)。没问题,我只从一个线程使用它

这是我真正的问题开始的地方。从互联网上的一些帖子(例如,仿生libc的某些部分(特别是stdio)似乎也不是线程安全的,至少在一些安卓版本中是如此(我们仍然针对3.0之前的版本)。现在的问题是,此应用程序/进程中使用的其他本机库是否会共享同一个libc实例,从而导致线程安全问题,还是每个共享库都有自己的libc实例

如果libc在所有共享lib之间共享,我在哪里可以找到关于它的哪些部分是线程安全的,哪些部分不是线程安全的?为了安全起见,我必须使用来自同一线程的所有本机lib吗

编辑:根据我目前的理解更新:仿生libc应该是完全线程安全的,上面显示的问题是一个在大多数情况下都不会发生的孤立错误(像许多MT错误)。问题是,但我最好的猜测是整个过程共享同一个libc实例。我稍后会尝试测试这个问题