社区
C++ 语言
帖子详情
进程间共享内存如何互斥?
dukang_2005
2009-06-10 11:58:56
比如开辟了一块进程共享内存,为了实现互斥修改,在共享内存开始的地方放个 pthread_mutex_t mutex, 然后多个进程都对这个mutex进行lock可以么?pthread_mutex_t mutex放在共享内存里和 进程内部的用法是同样的吧?
...全文
1491
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标准的线程库,与进程不同
互相独立
进程
间
共享内存
互斥
访问的解决办法
本文介绍了一种通过
互斥
锁实现在多个
进程
间
共享内存
的
互斥
访问的方法。利用信号量和
互斥
锁进行同步控制,确保了在多
进程
环境下共享资源的安全访问。
Linux
进程
间
互斥
锁 (
共享内存
实现)
本文介绍如何在
共享内存
上定义
进程
间
的
互斥
锁,实现不同
进程
对共享资源的安全访问。通过具体代码示例展示了如何创建、初始化、使用及销毁
进程
锁。
共享内存
+
互斥
量实现 Linux
进程
间
通信
本文介绍了使用
共享内存
和
互斥
量实现在Linux下
进程
间
通信的方法,详细阐述了
共享内存
的申请、连接、分离、删除过程,并通过示例代码展示了如何利用
互斥
量实现
进程
对
共享内存
的
互斥
访问。
Linux使用
共享内存
做
进程
间
互斥
通信
在Linux中,
共享内存
本身无
进程
间
同步机制,需结合信号量等工具实现
互斥
通信。本文给出详细示例,包含
共享内存
和信号量初始化、写入
进程
、读取
进程
及清理资源的代码,还介绍了编译运行步骤,强调信号量作用、
共享内存
使用及资源管理要点。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章