1. Android编译含多线程的代码
1.1 编译错误
error: implicit declaration of function 'pthread_cancel' [-Werror=implicit-function-declaration]
1.2 错误原因

Android NDK在v5版本后不再提供全部的POSIX线程库的API(比如pthread_cancel和pthread_setcancelstate)。原因之一是线程被标记结束后不一定会把自己拥有的资源释放掉,甚至不一定会结束,因此很可能造成内存泄露或死锁等问题,而这些问题在移动设备上更加突出[1]。
比较安全的方法是使用更安全pthread_kill函数代替,有关pthread_kill的功能讲解和替换方式可以参考:
https://blog.csdn.net/darkengine/article/details/7106207

1.3 解决办法
#define SIG_CANCEL_SIGNAL SIGUSR1
#define PTHREAD_CANCEL_ENABLE 1
#define PTHREAD_CANCEL_DISABLE 0typedef long pthread_t;static int pthread_setcancelstate(int state, int *oldstate) {sigset_t   new, old;int ret;sigemptyset (&new);sigaddset (&new, SIG_CANCEL_SIGNAL);ret = pthread_sigmask(state == PTHREAD_CANCEL_ENABLE ? SIG_BLOCK : SIG_UNBLOCK, &new , &old);if(oldstate != NULL){*oldstate =sigismember(&old,SIG_CANCEL_SIGNAL) == 0 ? PTHREAD_CANCEL_DISABLE : PTHREAD_CANCEL_ENABLE;}return ret;
}static inline int pthread_cancel(pthread_t thread) {return pthread_kill(thread, SIG_CANCEL_SIGNAL);
}

参考网址:https://www.jianshu.com/p/ee417102d7fc

【编译工具】之Andorid pthread_cancel函数相关推荐

  1. 【Android 高性能音频】Oboe 函数库简介 ( Oboe 简介 | Oboe 特点 | Oboe 编译工具 | Oboe 相关文档 | Oboe 测试工具 )

    文章目录 一.Oboe 简介 二.Oboe 特点 三.Oboe 编译工具 四.Oboe 文档 五.Oboe 测试 一.Oboe 简介 Oboe 简介 : ① 函数库 : Oboe 是 C++ 函数库 ...

  2. less及编译工具介绍

    什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LE ...

  3. NEO智能合约反编译工具

    2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 下拉最后看演示效果.项目地址 本来这应该是一个很和谐的感恩节假期,本来我可以很悠闲的写完所有作业然后随便看点论 ...

  4. gcc mips64编译后无法运行在octeon上运行_编译工具链

    软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...

  5. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  6. android studio 反编译工具,android studio反编译工具jd-inteIIij

    Android Studio 自带了Java Bytecode Decompiler 对于第三方的jar只能反编译出其函数名 例如:andbase里的com.kfb.c.jar下的com.kfb.c下 ...

  7. 史上最全的stm32资料库4---常见问题及编译工具篇

    [常见问题解答 (Frequently Asked Questions) STM32常见问题解答(基本篇) ST-Link2使用指南 STM32 ISP 下载工具 编译工具介绍篇 1.RealView ...

  8. GNU gcc的编译工具用法(转)

    对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧. 一.GNU gcc的编译工具用 ...

  9. ARM 编译工具链详解

    ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...

最新文章

  1. 随笔之如何实现一个线程池
  2. AI一分钟 | 程维成立滴滴股权投资公司;特斯拉董事会决定放弃私有化
  3. foreach用法_25个你不得不知道的数组reduce高级用法
  4. 广州.NET俱乐部 VSTS活动报道
  5. C#调用C++类(以COM组件的形式)
  6. html 新浪博客,html
  7. 香港理工大学人工智能设计实验室 博士后 招聘
  8. java中实现全局变量的功能
  9. MySQL5.7 踩坑实录
  10. VMware for mac inside error solutions
  11. 安卓短信软件_【安卓清理君】极度舒适的垃圾清理工具
  12. 2018年10月29日英语学习
  13. npm run dev报错 Class constructor ServeCommand cannot be invoked without new
  14. github项目的JAVA项目Ratel,基于Netty实现
  15. Golang面向对象之-类
  16. css让背景颜色与背景图片同时显示
  17. SQL Server查询排序 升序 降序
  18. 解决 Performing stop of activity that is not resumed 报错!!
  19. easyrecovery14激活密钥数据恢复下载最新2020教程
  20. 利用Python做一个简单的打印店计费程序

热门文章

  1. java代码操作注册表,java操作注册表范例代码
  2. c语言dp算法,C++动态规划dp算法题
  3. easyui-combobox 模糊匹配 支持汉字和拼音_巧用数据验证制作模糊匹配的下拉列表...
  4. python h5s文件 压缩_如何用python解压zip压缩文件
  5. ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
  6. python getsize_Python getsizeof()和getsize()区分详解
  7. mysql接口教程_接口测试教程 - xmysql 介绍
  8. columns列:Rows 工作表上所有的行
  9. short类型占16位,可以赋给short类型的最大值32767,最小值为-32768
  10. Iplat62---CRUD