2014-11-09 46 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