Linux线程的使用

1、 概念
进程内部的一条执行序列。 进程内部至少有一条执行线程。 即就是 main函数的执行体。 进程内部可以有多条线程, main 函数的线程称之为主线程, 其他线程称之为函数线程。 函数线程是由主线程通过系统调用函数创建的。
2、 与进程的区别:
①进程是资源分配的最小单位, 线程是调度(执行) 的最小单位
② 第七点
③ 线程切换比进程切换消耗小
3、 线程的分类
① 用户级: 在用户空间是多线程的, 内核只识别进程整体。 线程创建、 管理、 销毁都是由用户空间负责, 用户通过调用库函数在完成。
②内核级: 线程的创建、 控制、 销毁都是由内核实现的, 每个线程对内核都是可见的。
③组合模型: 一部分是用户级, 一部分内核级线程。 介于内核级和用户级之间, 用户态创建多个线程, 内核看到的也是多个, 只是这是种 m: n 的对应关系。
4、 线程的创建
头文件名称:#include “pthread.h”
int pthread_create(pthread_t *id, pthread_attr_t *attr,
void*(pthread_fun)(void), void *arg);
id : 线程的编号, 由系统自动填充;
pthread_attr-_t: 线程属性;//传递空为默认属性
pthread_fun: 线程创建以后所调用的函数地址;
arg: 传递给函数线程的参数。
5、int pthread_join(pthread_t id, void**p);函数
作用: 获取指定线程由 pthread_exit 设置的退出信息。
特性: pthread_join 函数会阻塞直到等待的线程退出。 (类比 进程控制中的 wait 函数)
6、函数线程一般传递的参数都是void类型,在函数线程中需要改成原来类型,需考虑值有没有发生改变。
7、 线程间的数据共享:
全局变量 共享
栈区数据 不共享
堆区 共享
文件: 共享 同一个进程的线程, 使用一个 PCB, 只要线程能拿到打开的文件的文件描述符, 就可以通过文件描述符操作文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值