Linux|线程知识总结

多线程的基本概念

在一个程序里的一个执行线路叫做线程。也称为一个进程内部的控制序列。每个线程都代表进程的一个执行流。

线程独有的部分:
栈,寄存器,信号屏蔽器,errno,标识符

线程共享的部分:
虚拟地址空间(代码段,数据段),文件描述符,信号处理方式,工作路径,用户ID,组ID

线程的优点:

  • 创建/销毁成本更低
  • 线程间调度成本更低
  • 线程间通信方式更加灵活(全局变量,函数传参)
  • 异常和某些系统调用针对的是整个进程

线程的缺点:

  • 性能损失
  • 健壮性降低
  • 缺乏访问控制
  • 编程难度提高

一般情况下对程序安全性、稳定性要求更高的使用多线程,其他的使用多线程(shell/服务器)

线程控制

创建/终止/等待/分离
使用POSIX库
使用时加入头文件#include <pthread.h>
链接时要使用编译命令 “-lpthread”

线程创建
typedef void *(*thread_routine)(void *);
int pthread_create(pthread_t *tid,pthread_attr_t *attr,void *(*thread_routine)(void *),void *arg);

  • tid:用于获取线程id,用过这个id可以找到线程的描述信息,进而访问pcb(轻量级进程完成控制)
  • attr:线程属性,通常设置为NULL
  • thread_toutine:线程入口函数,创建一个线程就是为了运行这个函数,函数运行完毕,则线程退出
  • arg:通过线程入口函数,传递给线程参数
  • 返回值:0 成功,失败返回一个非零值(errno)

在Linux系统中可以使用 ps -L查看线程信息ps -efL

线程终止

  1. 普通线程入口函数中的return(main 函数中的return退出的时进程)
  2. void pthread_exi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值