免费注册 查看新帖 |

Chinaunix

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

SOS!并行进程中,一个进行读文件,一个删除文件,如何避免可能出现的情况? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-31 22:27 |只看该作者 |倒序浏览
有一个实现代理服务的程序,每来一个连接请求就创建一子进程为其服务.当子进程读cache(实现cache功能,但是以磁盘为物理实体),判断cache中是否有所要的文件,如果有的话,接下来就是要进行连接,传送.如果刚好在开始传送数据之前,另一个进程即删除cache中最久没被访问的文件的进程刚好要删除此文件,这种情况该如何避免?要考虑到的其它问题有:
     1,在极短时间内,cache即磁盘可能爆满;
     2,客户端的请求要及时响应.
     3,用C实现

论坛徽章:
0
2 [报告]
发表于 2006-07-31 22:34 |只看该作者
原帖由 paraller06 于 2006-7-31 22:27 发表
有一个实现代理服务的程序,每来一个连接请求就创建一子进程为其服务.当子进程读cache(实现cache功能,但是以磁盘为物理实体),判断cache中是否有所要的文件,如果有的话,接下来就是要进行连接,传送.如果刚好在开始传 ...

>>
>>
>>这是个调度的问题。如果一个文件被确定要使用,那么就对这个文件进行加锁或者做标记,并运行
>>cache更新,使这个文件处于最近被使用的文件状态,然后cache的清除程序就删除不了这个文件了。
>>无论怎么样,cache总是被一个个的有先后顺序的处理请求来处理的,就算是多线程、多进程都一样。
>>你的cache调度程序最好和客户连接请求进行做好一致性协调,任何操作之前最好做资源检查,如果
>>资源被暂用,就随即停顿一定时间(可以毫秒计算)。这个原理可以参考OS的cache原理进行实现。
>>
>>

论坛徽章:
0
3 [报告]
发表于 2006-07-31 22:59 |只看该作者
楼上所说的想法,我也考虑过,不过还有些地方,技术上不知如何实现:
   1,如何刷新cache
   2,加锁或标记,表示要使用该文件,那么在使用期间,删除进程也不能停,这该如何协调
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP