##疑問
**1、**rubyでファイルに追記する際、「読み取り」+「書き込み」が行われているのか、それとも「書き込み」のみが行われているのか?
**2、**もし「読み取り」+「書き込み」が行われている場合、「読み取り」のタイミングはファイルをクローズする瞬間なのか?
**3、**もし「読み取り」が発生してない場合は追記する際コンピュータはどういう判断で書き込む場所を理解しているのか?(ファイルのサイズを見て最後の場所に入れ込む?)
**4、**一つのファイルに対して同時かつ大量に追記が起きる場合でも排他制御はいれなくてもよいのか?
##背景
rubyでファイルに追記する場合は「読み取り+書き込み」が行われていると思い、以下の内容の実行ファイルを二つつくり排他制御有り無しでいろいろ実験してみました。
ruby
1File.open('/home/vagrant/tekitou/zikkenyou', 'a')do |f| 2 f.flock(File::LOCK_EX) #占有ロック(排他制御) 3 a = gets 4 f.write(a) 5end
排他制御ありだと待ち状態は発生しましたが、何を試しても古い状態に対してアップデートを行うという問題(用語を忘れました)は起きなかったです。
つまり書き込む瞬間に書き込むべき最後の行をコンピュータが理解しているのだろうと思いましたが確証はまったくもてずにいます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。