记一个有关使用promise/future的bug

发布于 2021-09-23  89 次阅读


我在代码里头使用了promise/future,因为在单线程下测试功能,所以并没有链接pthread库。编译链接通过,但运行的时候报了std::system_error异常,且异常号为未知异常。

一开始以为是promise/future的底层实现在单线程死锁了?后来添加了thread库,把功能放到另一个线程里。结果就正常了。

之后把多线程的部分删掉,结果居然就可以正常运行了,最后发现这个问题在pthread库链接上的时候就没有了。

但奇怪的就是编译器在链接的时候并没有报错找不到符号。可能默认用了动态链接,然后标准库的异常把找不到符号吞了。


当其他人都认为你要鸽的时候,你鸽了,亦是一种不鸽