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

线程安全 - 笔记

1 程序a调用c.so,程序b也调用c.so c.so加载两次吗?

在这种情况下,通常 c.so 不会被加载两次。

当一个程序调用一个共享对象文件(.so)时,操作系统的动态链接器将该共享对象映射到进程的虚拟内存空间中。后续由不同程序或者同一个程序调用相同的共享对象,都不会导致共享对象被重新加载。相反,动态链接器会检查共享对象是否已经加载,如果是,则仅增加它的引用计数。

因此,当程序 A 和程序 B 都在运行并且它们都调用 c.so 中的函数时,动态链接器会确保 c.so 只被加载一次,并且两个程序会共享同一个 c.so 实例。这就是使用共享库的好处之一——它们在多个进程之间共享,减少了内存消耗并提高了效率。

2 同时调用其中的函数fun -- 会产生冲突吗?

在一般情况下,同时调用共享库(c.so)中的同一个函数(例如 fun)不会产生冲突。

当多个程序同时调用共享库中的同一个函数时,每个程序的调用会被独立处理,而函数的代码段在内存中只有一份。因此,不会出现冲突的情况。操作系统会确保在多线程或多进程的情况下,对共享库中的函数的并发调用是安全的。

然而,要注意的是,如果函数 fun 内部存在状态(例如全局变量),并且这些状态在多个函数调用之间是共享的,则可能需要考虑线程安全性,以避免竞争条件和数据损坏。在这种情况下,需要使用同步机制

http://www.lryc.cn/news/358433.html

相关文章:

  • 分支机构多,如何确保文件跨域传输安全可控?
  • 长安链使用Golang编写智能合约教程(二)
  • jpom linux发布前端 ruoyi
  • K8S认证|CKA题库+答案| 15. 备份还原Etcd
  • 软件架构设计属性之一:功能性属性浅析
  • 学习Java的日子 Day48 函数,DOM
  • Scikit-Learn朴素贝叶斯
  • 网页设计步骤总结
  • 第十三期Big Demo Day亮点项目:CCarbon重塑碳交易生态,助力全球绿色发展
  • python基础知识总结(第一节)
  • DOS学习-目录与文件应用操作经典案例-comp
  • 原神抽卡点名程序教程(直接下载用)
  • gpt-4o继续迭代考场安排程序 一键生成考场清单
  • php 设置时区
  • ArcGIS不同图斑设置不同的透明度
  • 前端 CSS 经典:图片边框
  • 异常有什么,异常类有什么
  • 如何解压忘记了密码的加密zip压缩包?这两个方法收藏好!
  • java中,怎样用最简单方法实现写word文档
  • 大语言模型的工程技巧(三)——分布式计算
  • AI开发初体验:昇腾加持,OrangePi AIpro 开发板
  • 微服务架构下Docker容器技术与Kubernetes(K8S)
  • 风萧萧兮易水寒,壮士一去兮不复还 的 rm 命令
  • How Diffusion Models Work
  • antd table列选中效果实现
  • Golang实现文件复制
  • 探秘SpringBoot默认线程池:了解其运行原理与工作方式(@Async和ThreadPoolTaskExecutor)
  • kubernetes(Jenkins、kubernetes核心、K8s实战-KubeSphere、)
  • 国际数字影像产业园|科技与文创产品创意集市,共筑创新文化新高地
  • leetcode-55 跳跃游戏