社区
C++ 语言
帖子详情
进程间共享内存如何互斥?
dukang_2005
2009-06-10 11:58:56
比如开辟了一块进程共享内存,为了实现互斥修改,在共享内存开始的地方放个 pthread_mutex_t mutex, 然后多个进程都对这个mutex进行lock可以么?pthread_mutex_t mutex放在共享内存里和 进程内部的用法是同样的吧?
...全文
1489
14
打赏
收藏
进程间共享内存如何互斥?
比如开辟了一块进程共享内存,为了实现互斥修改,在共享内存开始的地方放个 pthread_mutex_t mutex, 然后多个进程都对这个mutex进行lock可以么?pthread_mutex_t mutex放在共享内存里和 进程内部的用法是同样的吧?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq120848369
2012-03-27
打赏
举报
回复
[Quote=引用 10 楼 geodge831012 的回复:]
引用 5 楼 mymtom 的回复:
引用 4 楼 drq6772 的回复:
基本原理是这样:
down(&mutex) //进入临界区
...
...
...
up(&mutex) //出临界区
至于LZ说的pthread_mutex_t mutex我没用过,但感觉不应该放在共享内存里吧?
个人意见,仅供参考。
pthread_mut……
[/Quote]
++
lily0628
2012-03-27
打赏
举报
回复
CriticalSection也可以的吧
EnterCriticalSection(&cs);
//dosometing...
LeaveCriticalSection(&cs);
实践是最好的学习
2012-03-27
打赏
举报
回复
[Quote=引用楼主 dukang_2005 的回复:]
比如开辟了一块进程共享内存,为了实现互斥修改,在共享内存开始的地方放个 pthread_mutex_t mutex, 然后多个进程都对这个mutex进行lock可以么?pthread_mutex_t mutex放在共享内存里和 进程内部的用法是同样的吧?
[/Quote]
用带PTHREAD_PROCESS_SHARED属性来初始化你的mutex就可以了
pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&mutex, &mattr);
我的理解是,既然phread_mutex_t能通过锁同一个文件来实现进程间共享,那么通过锁共享内存也应该能实现,因为共享内存貌似也是映射到文件的
geodge831012
2009-10-22
打赏
举报
回复
[Quote=引用 5 楼 mymtom 的回复:]
引用 4 楼 drq6772 的回复:
基本原理是这样:
down(&mutex) //进入临界区
...
...
...
up(&mutex) //出临界区
至于LZ说的pthread_mutex_t mutex我没用过,但感觉不应该放在共享内存里吧?
个人意见,仅供参考。
pthread_mutex_t的名字本身已经已经说明是用于Posix线程间同步的。
进程间互斥用信号量(Posix信号量和SYS V信号量都可以),简单的也可以用文件锁。
sem_open, semget, lockf
[/Quote]
mutex的属性中有进程间共享的参数选择,PTHREAD_PROCESS_SHARED
arong1234
2009-06-11
打赏
举报
回复
带名字的mutex是可以在多个进程中进行并发控制的。
例如Win32里CreateMutex最后一个参数就允许你指定一个名字,则同一台机器上的同名mutex都受控制
没用过pthread_mutex_t,估计有同样的机制,去找找它初始化函数的参数说明
mymtom
2009-06-11
打赏
举报
回复
[Quote=引用 4 楼 drq6772 的回复:]
基本原理是这样:
down(&mutex) //进入临界区
...
...
...
up(&mutex) //出临界区
至于LZ说的pthread_mutex_t mutex我没用过,但感觉不应该放在共享内存里吧?
个人意见,仅供参考。
[/Quote]
pthread_mutex_t的名字本身已经已经说明是用于Posix线程间同步的。
进程间互斥用信号量(Posix信号量和SYS V信号量都可以),简单的也可以用文件锁。
sem_open, semget, lockf
drq6772
2009-06-11
打赏
举报
回复
基本原理是这样:
down(&mutex) //进入临界区
...
...
...
up(&mutex) //出临界区
至于LZ说的pthread_mutex_t mutex我没用过,但感觉不应该放在共享内存里吧?
个人意见,仅供参考。
性能侠客行
2009-06-11
打赏
举报
回复
互斥可以在不同的进程中使用,
但是使用完后,要及时释放,互斥信号量。。。。
mengde007
2009-06-11
打赏
举报
回复
互斥可以在不同的进程中使用;
superyys
2009-06-11
打赏
举报
回复
pthread_mutex_t mutex是在unix类操作系统里用,只对一个进程内的多个线程有效,
你这种情况需要用信号量作互斥锁
tanglg888
2009-06-11
打赏
举报
回复
Windows下使用命名Mutex
Unix下使用信号量
once_and_again
2009-06-11
打赏
举报
回复
pthread_mutex_t
跟共享内存没有直接的关系?
共享 内存 是对 内存里的指针来操作的。
lylm
2009-06-11
打赏
举报
回复
同意5楼,pthread是支持Posix标准的线程库,与进程不同
互相独立
进程
间
共享内存
互斥
访问的解决办法
前提:两个
进程
互相独立,访问同一片
共享内存
存在问题:1、如何避免两个
进程
同时访问
共享内存
(一旦两个
进程
同时访问一个临界区,后果是程序崩溃)2、如果使用
互斥
锁,如何让两个
进程
拿到同一个
互斥
锁解决办法:针对问题1,可以使用信号,信号量,
互斥
锁来进行同步,但是信号和信号量需要两个
进程
都实现一套自己的逻辑(访问临界区前,先检查冲突标志,如果没有冲突则访问,并向其它的所有
进程
依次发送信号,告诉它们我要开始访...
Linux
进程
间
互斥
锁 (
共享内存
实现)
01 原理 开辟一块
共享内存
,使得相关
进程
均可访问同一块区域,再将
互斥
锁定义在该区域(即
共享内存
)上,使得相关
进程
可以使用该锁。 02
进程
间
的
互斥
锁和线程
间
互斥
锁的区别 函数pthread_mutex_init(
互斥
锁地址, 属性对象地址)在定义一把线程锁的时候第二个参数通常传为NULL,这样该锁默认只能被统一
进程
下的线程持有。 如果要将其定义为
进程
之
间
可以持有的
互斥
锁,则需要传入属性对象地址。...
共享内存
+
互斥
量实现 Linux
进程
间
通信
第三部分:权限标识,由八进制表示,如0640,第一个0是八进制数标识,第一个6(4+2)表示拥有者的权限读和写,第二个4表示同组权限写,第3个0表示他人的权限。
互斥
量用于线程的
互斥
,信号量用于线程的同步,这是
互斥
量与信号量的本质区别,其次信号量实现
互斥
量的功能。本文结合个人实际项目需求,采用
互斥
量实现
进程
间
访问
共享内存
的
互斥
,即同一时刻只能允许一个
进程
对
共享内存
进行写操作,当然也可以用信号量来完成
进程
间
的
互斥
,这里就不再赘述。Command设置为IPC_STAT的时候,取得的状态放在这个结构体中。
Linux使用
共享内存
做
进程
间
互斥
通信
在Linux中,
共享内存
本身不提供
进程
间
同步机制,因此需要结合其他同步工具(如信号量或
互斥
锁)来实现
进程
间
的
互斥
通信。以下是一个详细的例子,展示如何使用
共享内存
和信号量实现
进程
间
的
互斥
通信。
完美复现功率阶跃工况光储 VSG 并网电能质量自适应治理策略(Simulink仿真实现)
内容概要:本文针对功率阶跃工况下光储虚拟同步发电机(VSG)并网系统存在的电能质量问题,提出一种自适应治理策略。通过Simulink搭建完整的光储VSG并网系统仿真模型,重点研究在功率突变条件下系统出现的频率波动、电压畸变及谐波增加等动态问题。所提策略结合VSG的惯量与阻尼特性,设计了参数自适应调节机制,实现对系统动态响应过程的有效调控,显著提升了并网电流波形质量与频率稳定性,增强了系统在强扰动工况下的鲁棒性与电能质量治理能力。; 适合人群:具备电力电子、自动控制理论及新能源并网技术基础的科研人员、电气工程及相关专业的硕士/博士研究生,以及从事微电网、储能系统、VSG控制研发的工程技术人员。; 使用场景及目标:①用于分析光储系统在功率阶跃等动态工况下的并网特性与电能质量演变规律;②为VSG关键控制参数(如惯量、阻尼)的自适应整定提供设计思路与仿真验证平台;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的前期控制策略验证。; 阅读建议:建议结合Simulink仿真模型深入理解控制策略的实现逻辑,重点关注VSG惯量阻尼协同调节的自适应机制设计,可通过设置不同功率阶跃幅度、光照强度变化及负载投切等多场景进行仿真测试,全面评估策略的动态性能与适用边界。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章