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

 我来答
百度网友5311d79
推荐于2016-07-20 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3243万
展开全部
你说的是多进程还是多线程?

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

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

真要具体讲的话,非一两句话可以了事,需要罗列代码,否则太理论化了。建议楼主还是先在网上多看看吧。
cnf1980
2011-08-03 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:54%
帮助的人:2636万
展开全部
没有,除非你把这个文件当作一个缓存,然后加锁轮流访问。具体实现方法见大学教案:操作系统原理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式