41.线程封装与互斥

lesson31

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

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

mmap

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

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

看课件附录6-2

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


看代码,线程封装

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

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

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

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

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


线程的同步与互斥

看代码

相关推荐
csgo打的菜又爱玩6 分钟前
11.JobManager 启动流程总结
大数据·开发语言·qt·microsoft·flink
2401_8332693011 分钟前
Java IO流:从字节到字符的桥梁
java·开发语言
hhzz11 分钟前
第1天:初识Python
开发语言·python·学习编程
江沉晚呤时15 分钟前
C# 运行时类型创建:深入探索动态类型生成技术
开发语言·c#
晚风予卿云月25 分钟前
【linux】进程优先级
linux·运维·服务器
一拳一个娘娘腔27 分钟前
从sudo配置到Root Shell:Linux Sudo提权全景深度解析与防御指南
linux·网络·安全
万法若空40 分钟前
Cortex-A7的运行模式
linux·arm开发
zhangrelay1 小时前
三分钟云课实践速通--C/C++程序设计--
linux·c语言·c++·笔记·学习·ubuntu
szial1 小时前
Python Click 教程:从函数到专业命令行工具
开发语言·python
Karle_1 小时前
为AI编辑器准备c++编译环境,onnxruntime、cmake、cl,网上坑太多备份记录后续方便使用。
开发语言·c++·编辑器