开发者社区> 问答> 正文

多进程文件读写互斥问题:报错

描述:有两个进程A、B,进程A里有若干线程,都去读取本地一个文件txt(大约1分钟读取一次),进程B不定时修改文件txt。 需求:B对写文件和A里的线程读文件要互斥,以达到读写互不影响。B修改文件时,如果A内的某个线程正在读取文件,B要等待,等A的这个线程读完,B再修改,B修改时,A内的任何线程都不能读取文件,等B写完,A的线程再抢占文件进行读取。需要进程A和B内的线程们互斥,而B内的线程和线程之间不要互斥,线程要可以并发读取文件。这种限制要怎么做,求指点。

展开
收起
kun坤 2020-06-08 19:26:46 689 0
1 条回答
写回答
取消 提交回答
  • 系统本身不支持获取文件是否被读取这种状态,可以调用类似修改文件名的方法判断是否被占用,但是你无法保证判断完之后,在你修改或者读取这个文件时文件的状态,因为这时可能文件状态又被改变了。 想要严格限制只能通过进程间通信,或者类似分布式锁来限制。######.pid######什么意思 具体点######如果是c/c++, 可以参考一下 fcntl 设置读写锁看看是否满足你。######找到了这个读写锁(我是win编程,叫SRWLock),看资料是定义一个全局锁,同一个进程中的若干线程可以引用这个锁实现互斥,但是如何在不同进程间使用呢,要在不同进程间设置一个共享内存吗,把锁定义在共享内存中?

    2020-06-08 19:26:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
服务上云加速大家居产业C2M进程 立即下载
多线程 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多