社区
C++ 语言
帖子详情
进程间共享内存如何互斥?
dukang_2005
2009-06-10 11:58:56
比如开辟了一块进程共享内存,为了实现互斥修改,在共享内存开始的地方放个 pthread_mutex_t mutex, 然后多个进程都对这个mutex进行lock可以么?pthread_mutex_t mutex放在共享内存里和 进程内部的用法是同样的吧?
...全文
1465
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、如果使用
互斥
锁,如何让两个
进程
拿到同一个
互斥
锁解决办法:针对...
Linux使用
共享内存
做
进程
间
互斥
通信
在Linux中,
共享内存
本身不提供
进程
间
同步机制,因此需要结合其他同步工具(如信号量或
互斥
锁)来实现
进程
间
的
互斥
通信。以下是一个详细的例子,展示如何使用
共享内存
和信号量实现
进程
间
的
互斥
通信。
Linux
进程
间
互斥
锁 (
共享内存
实现)
开辟一块
共享内存
,使得相关
进程
均可访问同一块区域,再将
互斥
锁定义在该区域(即
共享内存
)上,使得相关
进程
可以使用该锁。 02
进程
间
的
互斥
锁和线程
间
互斥
锁的区别 函数pthread_mutex_init(
互斥
锁地址, 属性...
【linux
进程
间
通信(二)】
共享内存
详解以及
进程
互斥
概念
本篇文章着重讲解了
进程
间
通信的方式之一:
共享内存
的基本概念,
共享内存
的接口使用以及它的底层原理,内附代码和图文讲解,看完就能学会!
共享内存
+
互斥
量实现 Linux
进程
间
通信
一、
共享内存
简介 ...
共享内存
并未提供
进程
同步机制,使用
共享内存
完成
进程
间
通信时,需要借助
互斥
量或者信号量来完成
进程
的同步。这里说一下
互斥
量与信号量的区别。
互斥
量用于线程的
互斥
,信号量用...
C++ 语言
65,207
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章