我目前正在开发一个可以部署在arm和ppc架构上的多线程应用程序.我手臂上的pthread_cancel有问题.
手臂上的pthread_cancel与ppc的行为不同.线程被取消但是没有在arm上调用线程局部变量的析构函数.我还尝试显式定义通过pthread_cleanup_push安装的取消清理处理程序例程.但是当线程被取消时它没有被调用.
该代码适用于ppc.取消线程时,正在调用局部变量的析构函数.当我明确定义一个清理处理程序时,它在调用pthread_cancel时被调用并执行.
我错过了什么吗?一些编译器选项也许?
编程语言:C++
编译器:arm-linux-g ++/powerpc-linux-g ++
操作系统:Linux
编辑:
我发现在这个libc bug上记录了一些类似的问题.
使用gcc而不是g ++并添加-fno-exception编译器选项就可以了.但我真的想了解这个问题背后的原因.此外,-fno-exception意味着我将无法在我的应用程序中执行异常处理,而不是我现在正在使用它,但我可能在将来.
谢谢.