线程基础

本文详细介绍了线程的基础知识,包括线程共享的进程信息、线程标识的处理、线程的创建(POSIX标准)、线程的终止方式,以及线程的取消和清理处理程序。内容涵盖了线程ID的比较、pthread_create函数的参数解析、pthread_exit和pthread_join的使用,以及线程安全问题。下篇将探讨线程同步相关技术。
摘要由CSDN通过智能技术生成

部分理论知识

  1. 一个进程的所有信息对该进程的所有线程都是共享的,包括可执行的代码,程序的全局内存和堆内存,栈以及文件描述符。但是每个线程都有自己的一组寄存器,自己的栈空间,自己的errno变量。
  2. 内存分布(个人理解)
    (1)静态内存分布(程序)和动态内存分布(进程,线程);
    (2)内存分布
    |stack| 栈 :局部变量,运行时才有|
    |heap|堆:程序员自己分配内存,运行时才有|
    | .bss | 未初始化的数据段:未初始化或者初始化为0的全局变量和静态局部变量|
    |.data| 初始化的数据段:全局变量,静态局部变量,只读常量|
    |.txt|代码区|

线程标识

  1. 进程的ID在整个系统中是唯一的,但是线程ID不同,仅仅只有在它所属的进程上下文才有意义;线程ID是pthread_t数据类型的,可移植的操作系统对其类型都有不同的处理:比如linux3.2.0使用无符号长整型表示,Solaris 10 使用无符号整型等,因此在涉及到多个线程ID比较时应使用如下函数:
  2. int pthread_equal(pthread_t tid1, pthread_t tid2);
    返回值:若相等,返回非0数值,否则返回0
    pthread_t pthread_self(void);
    返回值:调用线程的id

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值