41.线程封装与互斥

lesson31

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

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

mmap

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

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

看课件附录6-2

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


看代码,线程封装

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

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

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

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

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


线程的同步与互斥

看代码

相关推荐
酷酷的身影11 小时前
Managers/APConfigManager.cs
开发语言·ui·c#
拳里剑气11 小时前
C++算法:优先级队列
开发语言·c++·算法·优先级队列
小七在进步11 小时前
数据结构:用队列实现栈
开发语言·数据结构
weixin_3077791311 小时前
Linux下ClickHouse数据仓库故障系统化诊断脚本
linux·运维·clickhouse·自动化·数据库开发
从零开始的代码生活_11 小时前
C++ 模板入门:函数模板、类模板与实例化机制
开发语言·c++·后端
luj_176819 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
不听话坏20 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi0720 小时前
require 和 import的区别
开发语言·前端
远离UE420 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬20 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++