当前位置: 首页 > news >正文

Linux多线程编程- pthread_self()

pthread_self() 函数是 POSIX 线程库的一部分,它提供了一个非常简单的功能:获取当前线程的唯一标识符。这个标识符是 pthread_t 类型的,通常是一个无符号的长整型值,不过具体的类型是由实现定义的,这意味着它可以在不同的操作系统上有不同的表示。

这个标识符对于调试多线程程序非常有用,因为可以以此来区分哪个线程正在执行。此外,pthread_self() 在实现线程的同步操作时也很有用,例如,在一个线程中设置一个锁,并且只允许拥有这个锁的线程来释放它。

pthread_self() 函数的原型如下:

#include <pthread.h>pthread_t pthread_self(void);

当我们调用这个函数时,它将返回当前线程的 pthread_t 标识符。该函数不接受任何参数,并且总是成功的,因此它没有返回错误代码。

在多线程程序中,每个线程都可以通过调用 pthread_self() 来获取自己的线程ID。线程ID可以用于比较操作,以判断两个线程ID是否相同。

下面是 pthread_self() 函数的一个简单示例:

#include <stdio.h>
#include <pthread.h>// 线程函数
void *thread_func(void *arg) {int num = (int)arg;pthread_t tid = pthread_self();printf("Thread %d ID: %ld\n", num, (long)tid);pthread_exit(0);
}int main() {pthread_t thread1, thread2;// 创建两个线程pthread_create(&thread1, NULL, thread_func, (void *)1);pthread_create(&thread2, NULL, thread_func, (void *)2);// 等待线程结束pthread_join(thread1, NULL);pthread_join(thread2, NULL);return 0;
}

程序运行结果如下:

$ ./pthread_self
Thread 1 ID: 139809461679680
Thread 2 ID: 139809453286976

在上面的程序中,每个线程打印出它的线程ID。尽管 pthread_create 函数调用返回的 pthread_t 变量可以用来识别线程,但是在线程的执行函数内部,pthread_self() 是识别执行线程的推荐方式。

http://www.lryc.cn/news/218204.html

相关文章:

  • APM建设踩了哪些坑?去哪儿旅行分布式链路追踪系统实践
  • ASTM F963-23美国玩具安全新标准发布
  • swift语言下SurfGen库做的爬虫是什么样的 ?
  • Vue纯CSS实现掷色子
  • 使用vscode开发uniapp项目常用的辅助插件,提升开发效率
  • python脚本监听域名证书过期时间,并将通知消息到钉钉
  • 那些看起来高大上的封装函数
  • go语言 | grpc原理介绍(三)
  • 记一次heapdump泄漏获取服务器权限
  • 大疆Livox MID-360安装ROS1/2驱动 Ubuntu20.04
  • Android 重启App
  • C语言的前置知识:数据量单位、汇编语言和寄存器
  • 【IDEA】在工具栏设置快速创建包和类的图表
  • int arrayL = sizeof(array) / sizeof(array[0]);
  • FFmpeg——使用Canvas录制视频尚存问题的解决方案
  • css进阶知识点速览
  • P2047 [NOI2007] 社交网络
  • 线性表的顺序存储
  • ChinaSoft 论坛巡礼 | 安全攸关软件的智能化开发方法论坛
  • 采用XML作为GUI描述语言
  • rust入门基础案例:猜数字游戏
  • vue-cli5.0.x优雅降级,配置项目兼容旧版浏览器
  • 关于RabbitMQ的小总结
  • webgoat靶场攻关
  • BEV-YOLO 论文学习
  • C++可以使用负数作为下标索引
  • react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
  • 峰回网关数采PLC
  • Vue+element el-date-picker 时间日期选择器设置默认值,选择框不显示问题(已解决)
  • 数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码