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

发布于 2022-07-22 13:10:25 字数 312 浏览 8 评论 2

有一个实现代理服务的程序,每来一个连接请求就创建一子进程为其服务.当子进程读cache(实现cache功能,但是以磁盘为物理实体),判断cache中是否有所要的文件,如果有的话,接下来就是要进行连接,传送.如果刚好在开始传送数据之前,另一个进程即删除cache中最久没被访问的文件的进程刚好要删除此文件,这种情况该如何避免?要考虑到的其它问题有:
     1,在极短时间内,cache即磁盘可能爆满;
     2,客户端的请求要及时响应.
     3,用C实现

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水水月牙 2022-07-25 06:24:27

楼上所说的想法,我也考虑过,不过还有些地方,技术上不知如何实现:
   1,如何刷新cache
   2,加锁或标记,表示要使用该文件,那么在使用期间,删除进程也不能停,这该如何协调

天邊彩虹 2022-07-23 02:31:29

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文