linux系统编程--线程

本文详细介绍了Linux系统中的线程概念,包括线程生成、线程标识、线程属性、线程创建、退出、合并、分离以及多线程区别。重点讨论了pthread_create、pthread_join、pthread_detach等关键函数的使用,强调了线程间的资源共享与同步问题。
摘要由CSDN通过智能技术生成

1.1什么是线程

线程是比进程更小的能独立运行的基本单位,线程基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如线程ID,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源(除了栈)

  • 其实在linux下
  • 线程就是进程–轻量级进程
  • 对于内核来说,线程就是进程

1.2线程生成图

在这里插入图片描述

1.3主进程和子进程共享

  • 除了栈以外,基本都共享
    在这里插入图片描述

  • 不共享的栈区,如果线程有5份 栈区被平分了5份,保证了,每个线程都有自己独立的栈,

  • 通信:全局变量,推。

2查看线程

  • 命令
命令 含义
ps -T -p -T开启线程查看
top -H -p -H开启线程查看

在这里插入图片描述

  • 文件
No. 文件 含义
/proc/{PID}/task/ 线程默认的名字和进程名相同
/proc/{PID}/task/{tid}/comm 线程名

在这里插入图片描述

3操作函数

3.1线程标识pthread_t pthread_self(void)

  • 返回值

    当前线程的线程ID (线程ID打印使用%lu)

3.2线程名字int prctl(int option, unsigned long arg2)

3.2参数

参数 含义
option PR_GET_NAME:获得当前线程的名字;PR_SET_NAME:设置当前线程的名字
arg2 线程名的长度最大为15字节,且应该以’\0’结尾

3.3返回值

返回值 含义
0 成功
非0 出错

3.3pthread_create

3.3.1函数原型

int pthread_create(pthread_t *thread, //线程ID(无符号长整形)
				   const pthread_attr_t *attr,//线程属性 一般为NULL
                   void *(*start_routine) (void *), //线程处理函数
                   void *arg);//线程处理函数参数

3.3.2返回值

  • 如果成功返回0失败返回错误号
  • 线程中,perror()不能使用该函数打印错误信息
if(ret!=0){
   
		printf("error number:%d\n",ret);
		//打印错误信息
		pruntf("%s\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值