社区
C++ 语言
帖子详情
提问帖,请问Linux共享内存的全局变量的差别
吾心安处方是家
2012-09-02 04:53:56
这里只谈Linux下多线程获取通一块数据的问题:
比如线程A和B他们格要查看一个数据对象num
1 全局变量的做法是这个int num只要是A和B都能访问到的即可,我做一个带锁的get,set函数就可以了
2 但是网上还有nmap和shmat的方法,我自己也尝试了皮毛。
所以不太理解,全局变量这种共享方式的存在是否合理。就来问一下各位了。希望知道的帮我解惑!!
...全文
767
6
打赏
收藏
提问帖,请问Linux共享内存的全局变量的差别
这里只谈Linux下多线程获取通一块数据的问题: 比如线程A和B他们格要查看一个数据对象num 1 全局变量的做法是这个int num只要是A和B都能访问到的即可,我做一个带锁的get,set函数就可以了 2 但是网上还有nmap和shmat的方法,我自己也尝试了皮毛。 所以不太理解,全局变量这种共享方式的存在是否合理。就来问一下各位了。希望知道的帮我解惑!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq120848369
2012-09-03
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
引用 3 楼 的回复:
回2楼
你是指,共享内存是多process之间的通信方式吧?
如果你是纠结于多进程没法互斥访问共享内存, 那你了解一下如何使用进程共享的mutex和cond,另外了解一下POSIX和SYSTEM V信号量。
你提到的MMAP和SHMGET也是POSIX和SYSTEM V的两种共享内存形式。
说你没学会C语……
[/Quote]
共享内存是多进程通信用的, 多线程随便你怎么做, 你不会malloc就用全局变量吧。
吾心安处方是家
2012-09-03
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
回2楼
你是指,共享内存是多process之间的通信方式吧?
如果你是纠结于多进程没法互斥访问共享内存, 那你了解一下如何使用进程共享的mutex和cond,另外了解一下POSIX和SYSTEM V信号量。
你提到的MMAP和SHMGET也是POSIX和SYSTEM V的两种共享内存形式。
说你没学会C语言是因为你认为线程间共享的东西只……
[/Quote]
嗯,想问下,全局变量和共享内存比较,是不是效率上有差异,所以要用共享内存这种比较繁琐的方式。
qq120848369
2012-09-02
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
回2楼
你是指,共享内存是多process之间的通信方式吧?
[/Quote]
如果你是纠结于多进程没法互斥访问共享内存, 那你了解一下如何使用进程共享的mutex和cond,另外了解一下POSIX和SYSTEM V信号量。
你提到的MMAP和SHMGET也是POSIX和SYSTEM V的两种共享内存形式。
说你没学会C语言是因为你认为线程间共享的东西只能定义成全局变量,你难道想不出其他线程间共享变量的方法了吗?
吾心安处方是家
2012-09-02
打赏
举报
回复
回2楼
你是指,共享内存是多process之间的通信方式吧?
qq120848369
2012-09-02
打赏
举报
回复
楼主还是没掌握好C语言, 难道把变量和锁的地址传到两个线程里, 让两个线程去加锁操作就不行了吗?
genio
2012-09-02
打赏
举报
回复
共享内存用于跨进程,全局变量没法跨进程
Linux
之进程间通信——system V(
共享内存
、消息队列、信号量等)
本文介绍了另一种进程间通信——system V,主要介绍了
共享内存
,消息队列、信号量,当然消息队列了信号量并非重点,简单了解即可。
Linux
之环境变量
本文介绍了环境变量的相关概念。
dll多次实例化静态变量共享问题(
linux
,windows)
dll多次实例化时,系统会为每个实例分配独立的内存空间,静态变量也不例外,要想多个dll实例共用同一静态变量,目前查到最好的方法是通过编译参数,实现这个目的。
Linux
和Windows下均有各自的方法。 以下是我觉得比较好的两篇文章,附上出处,由于是简单拷贝,失去了原文格式,建议去看原文。 声明:由于同时转载了两篇文章,若发布类型选择转载只能填写一个转载链接,故发布类型选择原创,本文章实为转载,请支持原创。 Windows下实现: 版权声明:本文为CSDN博主「zslInSz」的原创文章,遵循CC
Linux
--虚拟内存地址空间(转载)
每一个进程,都拥有自己的虚拟内存地址空间虚拟内存地址空间的本质,就是我们上面验证的那个进程地址空间,这俩是一个东西每一个进程都不知道外部其他进程的存在,都认为自己独享物理内存,并且拥有4G的空间但实际上,并不是真正拥有4G内存,而是按需分配物理内存!其实,这本质不就是老板给员工画的一张饼吗?我们假设的认为:操作系统 --- 老板进程 --- 员工虚拟内存地址空间 --- 老板给员工画的饼物理内存 --- 真正的好处(例如:真的升职了,真的加薪了)
嵌入式系统中静态
共享内存
的注册与管理
通过定义
共享内存
结构体、注册
共享内存
到系统、获取
共享内存
句柄以及访问
共享内存
数据等步骤,我们可以实现多个进程或线程之间高效的数据交换和通信。静态
共享内存
是指在编译时就确定大小和位置的
共享内存
区域,它可以被不同的进程或线程共享,提供了高效的数据交换机制。在嵌入式系统开发中,对于实现高效的数据传输与通信,静态
共享内存
是一个常用且有效的方法。本文将介绍如何在嵌入式操作系统(例如optee_os)中进行静态
共享内存
的注册和管理,并提供相应的代码示例。本文提供的示例代码仅为参考,详细实现请参考相关文档和源代码。
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章