linux下获得线程tid的方法_sunny_ss12的博客-程序员ITS301_linux获取tid

技术标签: linux  

(1)如何获取进程的pid呢?
可以使用getpid
(2)但如何获取线程的tid呢?
可以使用gettid,man gettid后讲明:
gettid返回调用线程的thread ID(TID).在单线程进程下,thread ID等于process ID(即getpid返回的pid)。
但多线程进程下,所有线程有相同的pid,但是每个线程具有有唯一的tid。
(3)那gettid返回的tid与thread_self返回的thread ID有什么不同呢?
gettid返回的tid有内核维护,不同线程的tid一定不同。而thread_self返回的tid由线程库维护,而id空间是各个进程独立的。(即不同进程中的线程可能有相同的id)。
(4)调用gettid的方法
注意:如果用户想要获得线程真实的tid,不能直接调用gettid,原因为:man gettid中讲明:Glibc 没有提供这个系统调用的封装,需要调用syscall(SYS_gettid)。
其他glibc没有提供系统调用封装的函数可以参考/usr/include/sys/syscall.h,其实这些函数调用实际定义在/usr/include/bits/syscall.h。
打开/usr/include/bits/syscall.h我们发现一组宏定义了这些系统调用(当然也包括SYS_gettid),而这些宏的真实值定义在/usr/include/asm/unistd.h中。
(5)参考:
验证(2)的代码参考:http://www.cnblogs.com/lakeone/p/3789117.html 《 Linux下线程pid和tid — lakeone的博客》
其他参考:
http://blog.csdn.net/delphiwcdj/article/details/8476547 《Linux下获取线程TID的方法——gettid() — delphiwcdj的专栏》
http://blog.chinaunix.net/uid-28458801-id-4630215.html 《linux下syscall函数,SYS_gettid,SYS_tgkill — 海思了》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sunny_ss12/article/details/46807669

智能推荐

elementUI(vue-admin-beautiful)翻页组件的再次封装_weixin_44191318的博客-程序员ITS301

最近在使用vue-admin-beautiful做后台系统的时候发现翻页组件用的频率非常高,虽然它内部已经进行封装了但每次都要重用很多代码到不同的页面,索性给它进行二次封装(放进一个文件里边,需要用到分页的时候直接引入就好),话不多说上代码。***(父组件代码截图如下)一. 第①步在父组件中直接引入封装后的翻页组件(pages),并接收翻页需要传递的参数对象queryForm。二. 第②和③步在父组件中引入子组件。三. 第④步需要将接口中传入的参数(queryForm)在...

只将unity的UI控件添加到iOS视图层,不显示unity的原生背景(二)_卵毛三曲半的博客-程序员ITS301

刚面试完,信心备受打击,项目经验不够就是容易受歧视。继续更新吧。。。把自己这几个月学的分享一下上一篇博客实现了将unity的相机背景改为透明的,能够显示出iOS的视图。但是这时候,我们只能操作显示出来的iOS视图,不能点击unity的控件,那我们怎么才能实现点击呢?在unityView.mm中,我们添加代码- (BOOL)pointInside:(CGPoint)point w

Linux安装nginx到指定目录,并设置开机自启_龏皚觻髾檃的博客-程序员ITS301_linux安装nginx到指定目录

一、安装依赖安装nginx之前,需要安装gcc-c++编译器。nginx依赖的pcre和zlib包。1、gcc-c++编译器yum install gcc-c++yum install -y openssl openssl-devel2、pcre包yum install -y pcre pcre-devel3、zlib包yum install -y zlib zlib-devel如果上面的都没有安装过个,可以选择下面的一键安装命令。yum ...

学习git命令之clone_喜欢水晶的大白的博客-程序员ITS301

git clone将存储库克隆到新目录1.git clone -v, --verbose【远程仓库地址】详细地运行。不影响向标准错误流报告进度状态。2.git clone -q ,--quiet【远程仓库地址】安静地操作。进展不会报告给标准错误流。3.git clone --progress【远程仓库地址】除非指定了--quiet,否则默认情况下,将进度状态报告到标准错误流时会在标准错误流上报告。 即使标准错误流未定向到终端,该标志也会强制显示进度状态。4.git...

java和js的正则表达式一样吗_JavaScript与Java正则表达式写法的区别_耗奇心的博客-程序员ITS301

JavaScript验证写法:(转义符\)var str = "待验证文本";var regular = new RegExp(/这里是正则表达式/);if (regular.test(str)) {console.log("符合条件");} else {console.log("不符合条件");}//或者var str = "待验证文本";if (/这里是正则表达式/.test(str)) {c...

OneDrive - “An unknown error occurred”的解决方案_Kianteck的博客-程序员ITS301

在维护Office365时候,有遇到user report一个one drive issue,在move folder时候弹出错误信息“An unknown error occurred”,错误的code是0x80070005。本文对此做介绍。

随便推点

win7配置iis 出现:HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容..._weixin_33698043的博客-程序员ITS301

win7配置iis 出现:HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容这几天安装了Windows 7,由于直接从Xp 升级到Windows 7,对于一些设置不是很熟悉,不过总体感觉Wi...

lvgl preload(预加载对象)_JDSH0224的博客-程序员ITS301

源代码: //20. 预加载对象 //20.1 对象属性设置 static lv_style_t style; lv_style_copy(&style, &lv_style_plain); style.line.width = 10; /*10 px thick arc*/ style.line.color = lv_color_hex3(0x258); /*Blueish arc color*/ style.

Q_DECLARE_METATYPE 元对象系统注册自定义类型_code&&coder的博客-程序员ITS301

一、效果图二、代码#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEstruct myStruct{ QString txt;};Q_DECLARE_METATYPE(myStruct)class Widget : public QWidget{ Q_OBJECTp

vue打包electron和新建vue-electron项目_资深Bug开发大师的博客-程序员ITS301

vue打包electron当我们使用vue开发项目完,想生成客户端时,可以使用electron了1.将vue代码打包// 打包时需要相对路径 不然白屏// 新建vue.config.jsmodule.exports = { publicPath:'./', productionSourceMap:false}npm run build2.新建文件夹存放打包后的文件3.main.jsconst { app, BrowserWindow, Menu } = require('

​mac安装CentOS虚拟机_buppt的博客-程序员ITS301_mac安装centos

下载CentOS7的镜像文件CentOS官方镜像站点列表地址:https://www.centos.org/download/mirrors/中国境内CentOS镜像下载地址:阿里:...

推荐文章

热门文章

相关标签