2014-11-09 217 views
2

我正在编译使用Android工具链配​​置的程序。我正在使用ndk r10c。我做了使用pthread_cancel未找到使用android工具链编译

$./make-standalone-toolchain.sh --ndk-dir=/home/justin/bin/android-ndk-r10c/ --install-dir=/home/justin/android-toolchain/ 

一个独立的工具链,并能够配置我的项目,但是当我make我得到

error: 'pthread_cancel' was not declared in this scope 

头已经#include <pthread.h>this answer似乎表明,我应该能够使用我通常会这样做。

我错过了什么吗?

回答

5

仿生(Android的libc)没有pthread_cancel。 IIRC,当我们讨论添加这个时,我们选择不这样做,因为它的实现很容易出错并且对所有代码的性能都有害。

据我们所知,没有pthread的实现实现了完全正确的pthread_cancel。即使你没有使用pthread_cancel(因为需要防止许多代码段被中断pthread_cancel),它也会对所有代码施加成本。

+0

应该用什么来代替? – bph 2017-06-05 22:22:54

+0

这很大程度上取决于情况。 – 2017-06-06 07:27:23

+0

刚刚以同样的方式被捕获,即使用ndk将名为pthread_cancel()的线程库移植到android。希望GIYF和我能够凑齐android pthread头文件中的替代方案 – bph 2017-06-06 10:15:56