定义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以内,一般情况下写入时间为毫秒级。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)