是否正在从支持的init_routine中调用另一个pthread_once(使用不同的after_control和init_routine)?
例如,
Content
我实际上是试图初始化两个不同的'.so''packages',所以我需要有两个单独的初始化例程。 (我不能只是将它们组合为一个,可能会或可能不会涉及多个进程和线程)。
rtn_one()实际上在一个.so中,而rtn_two()在另一个中。
在http://pubs.opengroup.org/onlinepubs/9699919799/查看pthread_once的文档会使我有些困惑。他们提到“递归”是一个坏主意,但只是在尝试使用相同的after_control时(我对他们的推理有些困惑):
“如果init_routine使用相同的after_control递归调用pthread_once(),则该递归调用将不会调用指定的init_routine,因此指定的init_routine将不会完成,因此对pthread_once()的递归调用将不会返回。” / p>
就我而言,我使用的是Centos 7.5 linux,它似乎可以正常工作(我不确定pthread_once()中的内部互斥是否会引起问题)。
但是,我不确定这是否是应许的行为。