【编译工具】之Andorid pthread_cancel函数
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函数相关推荐
- 【Android 高性能音频】Oboe 函数库简介 ( Oboe 简介 | Oboe 特点 | Oboe 编译工具 | Oboe 相关文档 | Oboe 测试工具 )
文章目录 一.Oboe 简介 二.Oboe 特点 三.Oboe 编译工具 四.Oboe 文档 五.Oboe 测试 一.Oboe 简介 Oboe 简介 : ① 函数库 : Oboe 是 C++ 函数库 ...
- less及编译工具介绍
什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LE ...
- NEO智能合约反编译工具
2019独角兽企业重金招聘Python工程师标准>>> 0x00 前言 下拉最后看演示效果.项目地址 本来这应该是一个很和谐的感恩节假期,本来我可以很悠闲的写完所有作业然后随便看点论 ...
- gcc mips64编译后无法运行在octeon上运行_编译工具链
软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...
- Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具
最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...
- android studio 反编译工具,android studio反编译工具jd-inteIIij
Android Studio 自带了Java Bytecode Decompiler 对于第三方的jar只能反编译出其函数名 例如:andbase里的com.kfb.c.jar下的com.kfb.c下 ...
- 史上最全的stm32资料库4---常见问题及编译工具篇
[常见问题解答 (Frequently Asked Questions) STM32常见问题解答(基本篇) ST-Link2使用指南 STM32 ISP 下载工具 编译工具介绍篇 1.RealView ...
- GNU gcc的编译工具用法(转)
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧. 一.GNU gcc的编译工具用 ...
- ARM 编译工具链详解
ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...
最新文章
- 随笔之如何实现一个线程池
- AI一分钟 | 程维成立滴滴股权投资公司;特斯拉董事会决定放弃私有化
- foreach用法_25个你不得不知道的数组reduce高级用法
- 广州.NET俱乐部 VSTS活动报道
- C#调用C++类(以COM组件的形式)
- html 新浪博客,html
- 香港理工大学人工智能设计实验室 博士后 招聘
- java中实现全局变量的功能
- MySQL5.7 踩坑实录
- VMware for mac inside error solutions
- 安卓短信软件_【安卓清理君】极度舒适的垃圾清理工具
- 2018年10月29日英语学习
- npm run dev报错 Class constructor ServeCommand cannot be invoked without new
- github项目的JAVA项目Ratel,基于Netty实现
- Golang面向对象之-类
- css让背景颜色与背景图片同时显示
- SQL Server查询排序 升序 降序
- 解决 Performing stop of activity that is not resumed 报错!!
- easyrecovery14激活密钥数据恢复下载最新2020教程
- 利用Python做一个简单的打印店计费程序
热门文章
- java代码操作注册表,java操作注册表范例代码
- c语言dp算法,C++动态规划dp算法题
- easyui-combobox 模糊匹配 支持汉字和拼音_巧用数据验证制作模糊匹配的下拉列表...
- python h5s文件 压缩_如何用python解压zip压缩文件
- ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
- python getsize_Python getsizeof()和getsize()区分详解
- mysql接口教程_接口测试教程 - xmysql 介绍
- columns列:Rows 工作表上所有的行
- short类型占16位,可以赋给short类型的最大值32767,最小值为-32768
- Iplat62---CRUD