最近在项目中需要多线程调用子程序。子程序可能工作时间很长,故用 boost::process::child::wait_until 来实现超时功能。
然而,多线程压力测试时,发现有可能导致 core dump。
经查证,是 boost::process::child::wait_until 的一个bug.
目前, boost::process 库的作者 Klemens D. Morgenstern 承认了这个问题,并声称 在 windows 下正常,仅在 linux 有问题 (这与测试观察到的现象一致)。他们已经将这个函数弃用,但还没来得及在文档中标记。
这个帖子很新,是2023-10-30的。因此,项目中要避免使用该函数。