提问帖,请问Linux共享内存的全局变量的差别

吾心安处方是家 2012-09-02 04:53:56
这里只谈Linux下多线程获取通一块数据的问题:
比如线程A和B他们格要查看一个数据对象num
1 全局变量的做法是这个int num只要是A和B都能访问到的即可,我做一个带锁的get,set函数就可以了
2 但是网上还有nmap和shmat的方法,我自己也尝试了皮毛。

所以不太理解,全局变量这种共享方式的存在是否合理。就来问一下各位了。希望知道的帮我解惑!!
...全文
680 6 打赏 收藏 转发到动态 举报
写回复
用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就用全局变量吧。
  • 打赏
  • 举报
回复
[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语言是因为你认为线程间共享的东西只能定义成全局变量,你难道想不出其他线程间共享变量的方法了吗?
  • 打赏
  • 举报
回复
回2楼
你是指,共享内存是多process之间的通信方式吧?

qq120848369 2012-09-02
  • 打赏
  • 举报
回复
楼主还是没掌握好C语言, 难道把变量和锁的地址传到两个线程里, 让两个线程去加锁操作就不行了吗?
genio 2012-09-02
  • 打赏
  • 举报
回复
共享内存用于跨进程,全局变量没法跨进程

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧