我正在编写一个C库,在初始化期间需要fork().因此,我想断言()应用程序代码(在我的控制范围之外)从单个线程上下文调用我的库初始化代码(以避免众所周知的" 线程和fork不混合 "问题).一旦我的库被初始化,它就是线程安全的(并且期望应用程序级代码可以创建线程).我只关心支持pthreads.
使用pthreads计算当前进程空间中的线程数似乎是不可能的.实际上,即使googletest也只在Mac OS和QNX上实现了GetThreadCount().
鉴于我无法计算线程,我是否可以在某种程度上断言单线程上下文?
澄清:如果可能的话,我想避免使用"/ proc"(非可移植),附加库依赖(如libproc)和LD_PRELOAD样式的pthread_create包装.
澄清#2:在我的情况下,使用多个进程是必要的,因为我的库中的工作人员相对较重(使用webkit)并且可能崩溃.但是,我希望原始流程能够在工作人员崩溃中幸存下来.