41.线程封装与互斥

lesson31

为什么栈加栈大小 malloc是堆向上增长而 栈向下增长,起始地址是最上面的高地址。;

看代码这块testthread,自己都能调用clone,那库当然可以封装

mmap

可以自己用,将物理地址映射到虚拟地址返回,也可以把相同这块内存映射到另一个进程然后返回,或者将磁盘的内容存到物理内存,那么以后就不需要fd,只需要用虚拟地址就可以访问磁盘文件,,可以自己申请空间,可以进程间通信也可以文件映射

线程执行代码区我们指定的代码,用的参数占结构啥的是共享区的

看课件附录6-2

看代码,独立的栈其实也能访问,实际上每一个线程 都能访问另一个线程内容栈,因为资源都是共享,原则上只要不拿指针乱指,每个线程的站结构只有自己知道,所以说站结构是独占的。


看代码,线程封装

可以提前分离之后分离,不管提前之后,只要被分离了就return,如果已经运行了,直接调用pthread_detach主动分离,如果没有运行直接把标志位置一,

因为在start后面就会判断,所以从今往后创建线程时候,他自己就可以 detach,只设置标记位,再去创建就被分离了,

看外面的threadcc代码,资源共享不会写时拷贝

加了pthread之后这个变量就不会在已初始化数据段定义了,谁用会把这个变量在线程局部存储里存一份。

setname_up其实就是写进进程的局部存储,get也需要tid,因为都需要局部存储的内容


线程的同步与互斥

看代码

相关推荐
zzzzzz31014 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode14 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒3 天前
TShark:基础知识
linux
AlfredZhao3 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334664 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪4 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
LDR0064 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言