当前位置: 首页 > news >正文

兰州市七里河建设局网站鸿运通网站建设

兰州市七里河建设局网站,鸿运通网站建设,广州广告公司前100名排行,成都比较好的网站设计公司文章目录 1. 线程分离1. 为什么要线程分离#xff1f;2. 具体使用3. 为什么有时候分离在调用join 会正常运行#xff1f; 2. 如何理解线程库#xff1f;如何理解 先描述 在组织#xff1f; 3. C中使用多线程4. 线程局部存储局部变量全局变量 1. 线程分离 1. 为什么要线程分… 文章目录 1. 线程分离1. 为什么要线程分离2. 具体使用3. 为什么有时候分离在调用join 会正常运行 2. 如何理解线程库如何理解 先描述 在组织 3. C中使用多线程4. 线程局部存储局部变量全局变量 1. 线程分离 1. 为什么要线程分离 使用 pthread_join 默认是阻塞的 即主线程等待 新线程退出 在这个过程中主线程会直接卡住就没办法继续向后运行也就什么都干不了 若主线程 想做其他事情 所以就提出了线程分离的概念 默认情况下新创建的线程是joinable的 即 线程默认被创建出来时必须被join的 若不能被join线程对应的资源就无法释放进而造成内存泄漏问题 若不关心线程的返回值join是一种负担创建一个线程时提前告诉它要分离这个线程 2. 具体使用 输入 man pthread_detach 参数为 要分离线程的线程id 一个线程被分离就无法再被join如果join函数就会报错 刚开始有主线程和新线程使用pthread_join 使主线程等待新线程退出 随着自定义函数循环结束将返回值传给join新线程结束 在休眠5秒后主线程结束 由于使用线程分离后就不能使用pthread_join 所以运行可执行程序后会报错 3. 为什么有时候分离在调用join 会正常运行 在自定义函数中自己把自己分离 可执行程序运行后发现并没有报错分离和没分离是一样的 线程被创建的时候谁先执行并不确定 当使用pthread_create 创建线程时有可能新线程没有跑而是主线程继续向下执行进入join, 然后新线程才把自己分离 join时没有分离join后才进行分离所以会正常执行程序 2. 如何理解线程库 自己形成的可执行程序要跟库文件关联起来 库要加载到内存中经过页表映射到地址空间的共享区中 进程中的多线程可以随时访问库中的代码和数据 每个线程也都可以访问映射过来的pthread库 线程库也需要管理线程先描述再组织 线程库创建类似的管理线程的TCB 创建进程时在内核中存在LWP(轻量级进程),为了更好管理LWP没办法给用提供线程接口就必须使用pthread库来适配对线程做管理与LWP产生关联包含库中的线程属性 即TCB 在库中通过自己定义的线程控制结构把内核中的LWP控制起来 如何理解 先描述 在组织 描述 struct pthread 描述的是线程的其他的一些属性 线程局部存储 (后面会详细讲) 线程独立的栈 整体红色的框 作为一个结构体 等同于 线程的TCB 结构 进行描述 创建一个线程就有一个红色框 组织 整体红色的框 作为一个结构体 把 每个结构体想象成数组 可以聚合在一起 找线程找红色框的起始地址即可 称为 线程ID pthread_t 就是一个地址数据用来标识线程相关属性集合、 这个地址是虚拟地址 3. C中使用多线程 添加头文件 #include thread 使用 thread 创建对象th 想要执行什么方法可以把方法传入对象中 通过对象 . 的方式 可以调用 join detach 等 c底层是对原生线程库的封装 所以需要在makefile中添加pthread库 可执行程序即可正常运行 4. 线程局部存储 局部变量 局部变量在每个线程中是私有的 cnt在自定义函数中作为局部变量属于栈上的 每个线程都有自己的栈所以cnt属于每个线程都有的 三个线程对应的cnt地址是不相同的 三个线程的栈是不同的局部变量cnt开辟到不同的栈中 cnt是同一个变量地址绝对不一样 在自定义函数内定义的 局部变量cnt 是在运行时开辟的 编译时就把代码编译好了 局部变量会转化为汇编以栈顶或者栈底为参考点 减去或者加上 对应数字 就代表是开辟空间 更改 ebp 和 esp 就可以切换栈 ebp 可以是 线程1 、线程2、线程3的栈底根据调度的不同 在不同的栈中开辟不同的变量 全局变量 默认情况下全局变量是所有线程共享的 创建全局变量g_val并对其进行修改 当有多个线程对全局变量修改时地址是相同的 说明全局变量是所有线程共享的 全局变量在已初始化数据段处开辟的空间 若不想g_val 被全局共享 则加入 __thread 编译选项 可以构建每个线程之间的局部存储 每个线程对应的地址是不一样的 说明全局变量g_val 在每个线程中各自有一份 修改后的全局变量 在 线程局部存储 当中 将原来的全局变量给 主线程 以及新线程对应的 线程局部存储 都拷贝一份 每个线程都私有一份所以地址都不一样
http://www.hkea.cn/news/14446738/

相关文章:

  • 网站建设推广行业十大电商代运营公司排名
  • 湛江网站seo推广seo站内优化最主要的是什么
  • php手机网站模板上位机软件开发培训
  • 如何创造免费网站如何删除网站备案号
  • the7 做的网站住房城乡建设局网站首页
  • 做个网站 一般费用网页制作素材照片和文案
  • 选择电商网站建设旅游网站的功能及建设
  • 17858833595做网站南京seo代理
  • 网站集约化建设的讲话网站建设经销商
  • 怎么修改网站源文件余姚企业网站建设公司
  • 五是做好纪检监察网站建设商务网站建设与维护(专21春)
  • 智能营销型网站制作竞价推广运营
  • php如何制作网站百度点击软件
  • 驾校网站建设方案题婚十大企业网站排行榜
  • 做实验学编程的网站专业的网站建设价格低
  • 网站新建需要多久自己开公司需要什么流程
  • 网网站建设与制作ipad wordpress 应用
  • 版式设计模板网站营销网络建设将给三夫户外带来哪些有益的影响?
  • 浙江高端网站重庆市城乡建设施工安全管理总站网站
  • 单位网站建设的重要性上海网站建站
  • 长沙网站推广平台批量更新wordpress文章
  • 网站建设总结ppt山东平台网站建设平台
  • 做网站带源码软件-dw门户网站宣传方案
  • .net 企业网站源码网站规划的解释
  • 公司内部网站开发兰溪好品质高端网站设计
  • 网站布局设计怎么写网站做视频的软件有哪些
  • 郑州模板建站多少钱网站建设套模板下载
  • 美工需要的网站电子商务网站建设第一章课后
  • 昆明网上商城网站建设有做网站维护的
  • 怎样建个网站网站推广优化排名教程