Unix下使用线程读写锁对进程有什么影响?

zhangweiguo828 2012-08-07 07:15:00
现在有一种设计方案:
1.有一个主进程A
2.A里面有一片内存区域用于存放数据,叫M吧
3.主进程A会根据需要fork子进程进行处理,这些子进程在处理过程中会用到M中的数据。
4.A里面还有一个线程b,用来更新M中的数据。

现在我想用线程的读写锁来保证线程b在更新数据时,主进程A fork出来的子进程能够拿到新的数据。
1.fork子进程之前加读锁,fork之后取消读锁
2.更新M之前加写锁,更新之后取消写锁。

我的疑问是,这个读写锁对fork出来的子进程有效吗?
书上看到的读写锁机制是针对线程间的,所以才会有这种疑问。

期待高人指点一二。
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiter 2012-08-08
  • 打赏
  • 举报
回复
unix,,怎么学习,啊,求教。学了干什么啊,再求教
qq120848369 2012-08-07
  • 打赏
  • 举报
回复
做共享内存,在共享内存里创建进程共享的互斥锁/读写锁。

manpage看一下这些函数就会了:

int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);

void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
int shmget(key_t key, size_t size, int shmflg);

羽飞 2012-08-07
  • 打赏
  • 举报
回复
线程锁对进程肯定没有用的,如果要在进程之间加锁,肯定要用进程锁

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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