免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7948 | 回复: 16
打印 上一主题 下一主题

[C] 多个线程同时读写同一文件的操作是安全的吧? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-05 13:06 |只看该作者 |正序浏览
请问多个线程同时读写同一文件的操作是否安全?

论坛徽章:
0
17 [报告]
发表于 2007-11-07 21:25 |只看该作者
建议你读一读<Unix环境高级编程>的相关章节。

论坛徽章:
0
16 [报告]
发表于 2007-11-07 12:39 |只看该作者
再具体地问,假设文件F大小16KB,线程TR、TW操作文件F起始处的8KB,TR读,TW写。

会出现这样的情况吗?:TR正在读取数据,这期间,时间片切换到TW,TW写入数据,然后又回到TR。

                    导致TR读取的数据不一致,即一部分是TW新写入的数据,而另一部分是TW写入前的。

论坛徽章:
0
15 [报告]
发表于 2007-11-07 10:17 |只看该作者
不要希望系统给你做得太多,那样很危险

论坛徽章:
0
14 [报告]
发表于 2007-11-06 21:48 |只看该作者


之。

论坛徽章:
0
13 [报告]
发表于 2007-11-06 16:49 |只看该作者
需要加锁的。否则就成一锅粥了。

论坛徽章:
0
12 [报告]
发表于 2007-11-06 12:23 |只看该作者
POSIX线程有读写锁

论坛徽章:
0
11 [报告]
发表于 2007-11-06 11:49 |只看该作者
原帖由 cugb_cat 于 2007-11-6 11:25 发表

加锁后会挂起,如果不加锁,那两个线程是同时操作文件的。


印象中读写文件时,OS会先上锁文件索引节点的吧,应该不会冲突的(也不是很确定)

论坛徽章:
0
10 [报告]
发表于 2007-11-06 11:25 |只看该作者
原帖由 dongpy 于 2007-11-6 11:18 发表


线程A在读写文件F的时候,会被另一个读写文件F的线程B打断?

还是线程B会被OS挂起,直到线程A读写F完成?

加锁后会挂起,如果不加锁,那两个线程是同时操作文件的。

论坛徽章:
0
9 [报告]
发表于 2007-11-06 11:18 |只看该作者
原帖由 cugb_cat 于 2007-11-6 10:30 发表
又读又写,不同步,数据就乱七八糟了。


线程A在读写文件F的时候,会被另一个读写文件F的线程B打断?

还是线程B会被OS挂起,直到线程A读写F完成?
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP