SOS!并行进程中,一个进行读文件,一个删除文件,如何避免可能出现的情况?
有一个实现代理服务的程序,每来一个连接请求就创建一子进程为其服务.当子进程读cache(实现cache功能,但是以磁盘为物理实体),判断cache中是否有所要的文件,如果有的话,接下来就是要进行连接,传送.如果刚好在开始传送数据之前,另一个进程即删除cache中最久没被访问的文件的进程刚好要删除此文件,这种情况该如何避免?要考虑到的其它问题有:
1,在极短时间内,cache即磁盘可能爆满;
2,客户端的请求要及时响应.
3,用C实现
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
楼上所说的想法,我也考虑过,不过还有些地方,技术上不知如何实现:
1,如何刷新cache
2,加锁或标记,表示要使用该文件,那么在使用期间,删除进程也不能停,这该如何协调
>>
>>
>>这是个调度的问题。如果一个文件被确定要使用,那么就对这个文件进行加锁或者做标记,并运行
>>cache更新,使这个文件处于最近被使用的文件状态,然后cache的清除程序就删除不了这个文件了。
>>无论怎么样,cache总是被一个个的有先后顺序的处理请求来处理的,就算是多线程、多进程都一样。
>>你的cache调度程序最好和客户连接请求进行做好一致性协调,任何操作之前最好做资源检查,如果
>>资源被暂用,就随即停顿一定时间(可以毫秒计算)。这个原理可以参考OS的cache原理进行实现。
>>
>>