Linux, 同时多个程序打开一个文件访问并写入,怎么防止数据冲突,即有没有一个程序可以实现排队等候功能。

发布网友 发布时间:2022-04-26 02:00

我来回答

2个回答

热心网友 时间:2023-10-05 03:26

你说的是多进程还是多线程?

如果是多线程,可以考虑引入互斥锁(Mutex,Mutual Exclusive Lock)。
获得锁的线程可以完成“读-修改-写”的操作,然后释放锁给其它线程,没有获得锁的线程只能等待而不能访问共享数据,这样“读-修改-写”三步操作组成一个原子操作,要么都执行,要么都不执行,不会执行到中间被打断,也不会在其它处理器上并行做这个操作。
Mutex变量是非0即1的,可看作一种资源的可用数量,初始化时Mutex是1,表示有一个可用资源,加锁时获得该资源,将Mutex减到0,表示不再有可用资源,解锁时释放该资源,将Mutex重新加到1,表示又有了一个可用资源。
注意避免死锁就行了。

如果是多进程(多个不同的程序),可以考虑使用信号量(Semaphore),当然,也可用于同一进程的多线程。

真要具体讲的话,非一两句话可以了事,需要罗列代码,否则太理论化了。建议楼主还是先在网上多看看吧。

热心网友 时间:2023-10-05 03:26

没有,除非你把这个文件当作一个缓存,然后加锁轮流访问。具体实现方法见大学教案:操作系统原理。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com