当前位置: 技术问答>linux和unix
***如果有两个进程同时写数据到文件,系统是怎样决定写入顺序的?***
来源: 互联网 发布时间:2015-03-15
本文导语: 假如有两个进程同时打开一个文件,并写入一段数据,那么此时系统是先完成一个进程的请求,然后再写入下一个进程的数据。还是交替的将两个进程的数据写入文件里?! | 这个取决你打开...
假如有两个进程同时打开一个文件,并写入一段数据,那么此时系统是先完成一个进程的请求,然后再写入下一个进程的数据。还是交替的将两个进程的数据写入文件里?!
|
这个取决你打开文件,写入,关闭文件的顺序和打开方式:可能交替,可能不交替,可能相互覆盖.
一般做这样的操作时都要用P/V操作来进行同步/互斥操作.
一般做这样的操作时都要用P/V操作来进行同步/互斥操作.
|
我们不能预料哪个进程先运行, 即使知道那个进程先运行,那么在这个进程开始运行之后,
所发生的事情也依赖于系统负载和内核的调度算法。通常使用TELL 和WAIT 函数, 使两个进程的输出不再交叉混合。
所发生的事情也依赖于系统负载和内核的调度算法。通常使用TELL 和WAIT 函数, 使两个进程的输出不再交叉混合。
|
这就是一个竟态条件的例子,比如你往标准输出输出字符的时候,如果不用缓存而是一个字符一个字符的输出的时候,那么有可能不交替,也可能交替,和系统是相关的,这样的情况最好的方法是
进行进程间的"沟通",楼上的说的TELL WAIT就是不错的方法
进行进程间的"沟通",楼上的说的TELL WAIT就是不错的方法
|
是通过锁机制来解决这个问题的,
如果一个进程要对一个文件进行写操作,
他首先应对该文件加写锁,别的进行如果欲对同一文件进行写操作,就必须等
待了
如果一个进程要对一个文件进行写操作,
他首先应对该文件加写锁,别的进行如果欲对同一文件进行写操作,就必须等
待了