免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: blworld

[C] so中的全局变量是否可以被所有进程共享? [复制链接]

论坛徽章:
0
发表于 2008-07-11 19:54 |显示全部楼层
我总觉得全局变量这东西,在多线程中不可靠,特别是嵌入式中。当然不是一刀切。

除非自己能很好的解决互斥问题。写好锁机制。

论坛徽章:
0
发表于 2008-07-11 22:35 |显示全部楼层
原帖由 Alligator27 于 2008-7-11 22:15 发表
以前贴过的一张图。
266120


恩,你的意思就是so的.text section是通过map到同一物理内存,所以是共享的
而so .data section每个app都有自己的一份copy,所以他们之间是不共享的,那么能否通过什么编译连接选项从而使data section也共享呢?

论坛徽章:
0
发表于 2008-07-11 22:47 |显示全部楼层

回复 #12 blworld 的帖子

没有编译连接选项. 除非全局变量是只读的。

论坛徽章:
0
发表于 2008-07-11 23:00 |显示全部楼层
原帖由 Alligator27 于 2008-7-11 22:15 发表
以前贴过的一张图。
266120



恩 还是图片好理解,一看就明白了!

:wink: 好图一张走过....

论坛徽章:
0
发表于 2008-07-14 00:36 |显示全部楼层
原帖由 Alligator27 于 2008/7/11 22:15 发表
以前贴过的一张图。
266120


好图,收藏。

论坛徽章:
0
发表于 2008-07-14 01:09 |显示全部楼层

  1.         #pragma data_seg("sharedata")
  2.                 int        i=0;
  3.         #pragma data_seg()

  4.         #pragma comment(linker,"/SECTION:sharedata,RWS")

复制代码


VC中这样就行了

论坛徽章:
0
发表于 2008-07-14 09:32 |显示全部楼层
原帖由 blworld 于 2008-7-11 14:24 发表


这个也想过,我现在想有没有编译选项或者连接选线或者dlopen的参数,来简单的做到这一点?



so中使用shared memory可以达到你的要求

论坛徽章:
0
发表于 2008-07-14 13:31 |显示全部楼层
原帖由 aoegiss 于 2008-7-14 01:09 发表

        #pragma data_seg("sharedata")
                int        i=0;
        #pragma data_seg()

        #pragma comment(linker,"/SECTION:sharedata,RWS")



VC中这样就行了


对的,我就是想找找Linux下GCC有没有类似的用法。

论坛徽章:
0
发表于 2008-07-14 13:32 |显示全部楼层
原帖由 net_robber 于 2008-7-14 09:32 发表



so中使用shared memory可以达到你的要求


恩,这样固然可以。但是我想问问有没有类似16楼的做法,基于Linux+GCC的情况下。

论坛徽章:
0
发表于 2008-07-24 10:23 |显示全部楼层
.so里的全局变量不能在进程间共享。理由很简单:
1,每个进程的空间都是独立的
2,修改.so中全局变量的值并不会改写.so文件


按我的理解,2更精确地表达应该是修改.S0中的全局变量的值并不会修改.SO 中.BSS或.DATA中对应的值.
因为被可执行文件做了份PRIVATE COPY放到自己的BSS/DATA段中了.
但不知出于什么考虑,请教各位拉........
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP