多线程malloc时,有一个线程fork子进程,是否会引起子进程挂死

man pthread_atforkfork in multi-threaded program
■网友
在网上搜索加上自己实际测试,有一个fork-safe的概念,就是针对这样的问题,即多线程情况下执行fork,某些函数可能来刚好申请了某锁资源,这个时候fork子进程,子进程仅复制了当前的线程,其它线程并没有复制,导致一些锁资源得不到释放,会造成子进程挂死。通过自己实际测试,低版本glibc里面的malloc会出现这种问题,但是高版本的glibc中的malloc没有此问题。 localtime_r这个函数里面内部调用的一个时区转换的函数是fork-unsafe的,必须会产生此类问题


    推荐阅读