两程序文件互斥读写

两程序文件互斥读写,第1张

设置一个资源信号量mx,初始化为1,允许多进程读,至多只有首悉一进程写

定义RN 为读者上限, 变量L初始化为RN

reader:

Swait(L, 1, 1)//L-1, 有一个读者进来

Swait(mx, 1, 0)//开关作用,没有写者才能读

/*

*

*

perform an operation

*

*

*/碧斗

Ssignal(L, 1)//读悔芹磨者数加1

writer:

Swait(mx, 1, 1L, RN, 0)//没有写者也没有读者

/*

*

*

perform write operation

*

*

*/

Ssignal(mx, 1)

问题提出:系统进程/线程对同一个文件的读写为互斥关系时,此段如何协调。本文将只针对于作者在在2005年参与开发的一个监控系统中,所遇到的典型情形给出分析以及解决方式。

问题详细描述:

该系统中,文件做为消息传送方式,典型的过程为:进程A写数据如文件X;进程B发现特定目录中有文件,名为X;B读取X中内容后删除X。X为带有时间戳的不重名文件。问题:A正在写文件时,B刚好被调度到发现并读取文件,此时数据可能未写入完整,造成1.数据不完整,2.文件删除森坦誉 *** 作可能失败等错误。项目中,文件信扒X的内容非常短小,128bytes以内,一般情况下写入时间为毫秒级。

使用Lock关键字,详情参见MSDN

------

解决方案禅棚--------------------------------------------------------

那很容易让你的

多进程

彻底

死睁迟锁

。而且性能远不如网关机制。在访问贺早则文件的入口处加锁


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8175705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存