社区
C++ 语言
帖子详情
提问帖,请问Linux共享内存的全局变量的差别
吾心安处方是家
2012-09-02 04:53:56
这里只谈Linux下多线程获取通一块数据的问题:
比如线程A和B他们格要查看一个数据对象num
1 全局变量的做法是这个int num只要是A和B都能访问到的即可,我做一个带锁的get,set函数就可以了
2 但是网上还有nmap和shmat的方法,我自己也尝试了皮毛。
所以不太理解,全局变量这种共享方式的存在是否合理。就来问一下各位了。希望知道的帮我解惑!!
...全文
823
6
打赏
收藏
提问帖,请问Linux共享内存的全局变量的差别
这里只谈Linux下多线程获取通一块数据的问题: 比如线程A和B他们格要查看一个数据对象num 1 全局变量的做法是这个int num只要是A和B都能访问到的即可,我做一个带锁的get,set函数就可以了 2 但是网上还有nmap和shmat的方法,我自己也尝试了皮毛。 所以不太理解,全局变量这种共享方式的存在是否合理。就来问一下各位了。希望知道的帮我解惑!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
共享内存用于跨进程,全局变量没法跨进程
【硬件电源管理】基于PWRBRK信号的紧急功耗控制机制:PCIe设备应急降功耗状态与软件可见性设计
内容概要:本文档为PCI-SIG工程变更通知(ECN),提出了一种通过PWRBRK信号实现的紧急功耗降低机制,旨在标准化PCI Express扩展卡与系统间的应急功耗控制。该机制利用原保留引脚B30作为PWRBRK#信号引脚,支持系统在紧急情况下快速通知扩展卡进入低功耗状态,以防止硬件损坏。文档详细定义了电气特性、时序要求、配置寄存器字段(如Device Capabilities 2、Device Control 2和Device Status寄存器)以及多设备和虚拟化环境下的行为规范,并补充了SR-IOV环境中虚拟功能(VF)对应急功耗降低状态的支持方式。; 适合人群:从事PCIe硬件设计、固件开发或系统架构的工程师,特别是
web课程设计-学生管理系统项目阐述
web课程设计-学生管理系统项目阐述
openssh 10.4p1-openEuler 24.03.zip
备份ssh配置文件: cp /etc/pam.d/sshd /etc/pam.d/sshdbak cp /etc/ssh/sshd_config /etc/ssh/sshd_configbak 完成安装后: 恢复/etc/pam.d/sshd文件: cat /etc/pam.d/sshdbak > /etc/pam.d/sshd 启动sshd: ******千万不要systemctl restart sshd ****** 而直接用下面的命令start systemctl start sshd 如果启动失败,可以journalctl -n 20 -f -u sshd 查看错误信息
Android蓝牙打印Demo(cpcl指令)
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 在Android系统上达成蓝牙与便携式打印机的连接,通常包含了一系列技术要素和操作流程。名为"Android连接蓝牙打印机(cpcl指令)Demo完整版"的项目提供了一个全面的解决方案,它运用了专门的打印机指令集——CPCL(Control Program for ClearType Language),该指令集主要用于操控打印作业,尤其适用于标签和面单的打印。以下是关于此主题的详尽阐述: 1. **蓝牙传输打印**:Android平台内置了`BluetoothAdapter`类别用于管理蓝牙数据交互。必须确认设备已启用蓝牙功能,随后对邻近的蓝牙设备进行探测。`startDiscovery()`函数负责启动搜寻过程,而`getBondedDevices()`能够列出已建立配对的设备。 2. **建立与便携打印机的联系**:当识别出目标打印机后,可借助`BluetoothDevice`类中的`createRfcommSocketToServiceRecord()`函数构建RFCOMM(蓝牙串行端口协议)的通道。一旦连接建立成功,便可通过`connect()`函数与打印机展开信息交流。 3. **CPCL编码**:CPCL是一种与ESC/POS类似的页面描述性语言,它用于调控打印机的输出格式、文字样式、条形码等。比如,`^PJL`用于设定页面布局,`^FO`指定输出位置,`^A`设定字体尺寸,`^BC`生成条形码,`^PG`执行分页操作。在Android程序中,需将CPCL编码转为文本格式,再经由蓝牙通道传输至打印机。 4. **博思达软件开发工具包**:博思达作为一家著名的打印...
【工业互联网】基于大模型的智能助手应用:iNeuOS平台小i助手实现多模态交互与生产数据融合分析系统设计
内容概要:本文介绍了iNeuOS工业互联网操作系统及其新发布的人工智能助手——小i助手。iNeuOS作为面向工业领域的数字化底座平台,具备设备接入、数据采集、边缘计算与上层PaaS应用支持能力,广泛应用于钢铁、航天、新能源等行业。小i助手是集成于该平台的工业专属大模型智能应用,深度融合生产场景,提供文字对话、语音输入、报告下载等功能,支持多端访问(APP、浏览器、桌面),并具备方言识别、权限统一、能力灵活组合等特点,旨在为运维、工艺和管理人员提供高效便捷的AI服务。; 适合人群:从事工业互联网、智能制造、设备运维等相关工作的技术人员及管理人员,具备一定信息化系统使用经验的用户。; 使用场景及目标:①通过自然语言或语音快速获取设备状态、生产数据与分析结果;②利用AI生成分析报告并离线查阅;③在不同终端无缝切换使用,提升现场响应效率与决策能力。; 阅读建议:本资料适用于希望了解iNeuOS平台AI能力扩展的用户,建议结合实际应用场景体验小i助手的多模态交互与业务集成优势,重点关注其与工业知识库、数据库及大模型的灵活协同机制。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章