我是Android开发的新手(也不是C / C ++的专家),但我发现自己正在开发一个用C编写的本机共享库,它应该被Android应用程序(在其他平台中)使用。 / p>
现在,我开始考虑线程安全性,并确定我的lib当前不是线程安全的(使用静态/全局变量)。没问题,我只想从一个线程中使用它。
这是我的实际问题开始的地方。从互联网上的一些帖子(例如on Launchpad)来看,似乎仿生libc的一些部分(特别是stdio)也不是线程安全的,至少在一些Android版本中(我们仍然以3.0之前为目标)。现在的问题是,此应用程序/进程中使用的其他本机库是否共享相同的libc实例,导致线程安全问题,或者每个共享库是否都有自己的libc实例?
如果libc在所有共享库之间共享,我在哪里可以找到有关哪些部分是线程安全的信息,哪些不是?我是否必须使用来自同一线程的所有本机库才能安全起见?
编辑:使用我当前的理解进行更新:仿生libc 假设完全是线程安全的,上面显示的问题是一个孤立的错误,在大多数情况下不会发生(如许多MT错误) )。问题是,但我最好的猜测是整个进程共享相同的libc实例。我稍后会尝试测试。