描述:有两个进程A、B,进程A里有若干线程,都去读取本地一个文件txt(大约1分钟读取一次),进程B不定时修改文件txt。 需求:B对写文件和A里的线程读文件要互斥,以达到读写互不影响。B修改文件时,如果A内的某个线程正在读取文件,B要等待,等A的这个线程读完,B再修改,B修改时,A内的任何线程都不能读取文件,等B写完,A的线程再抢占文件进行读取。需要进程A和B内的线程们互斥,而B内的线程和线程之间不要互斥,线程要可以并发读取文件。这种限制要怎么做,求指点。
系统本身不支持获取文件是否被读取这种状态,可以调用类似修改文件名的方法判断是否被占用,但是你无法保证判断完之后,在你修改或者读取这个文件时文件的状态,因为这时可能文件状态又被改变了。 想要严格限制只能通过进程间通信,或者类似分布式锁来限制。######.pid######什么意思 具体点######如果是c/c++, 可以参考一下 fcntl 设置读写锁看看是否满足你。######找到了这个读写锁(我是win编程,叫SRWLock),看资料是定义一个全局锁,同一个进程中的若干线程可以引用这个锁实现互斥,但是如何在不同进程间使用呢,要在不同进程间设置一个共享内存吗,把锁定义在共享内存中?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。