JDBな人生  専門的なことから日常的なことまで~ まぁ自由きままに書いていきます。
2017年09月 / 08月<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>10月

アクセスランキング

[ジャンルランキング]
コンピュータ
284位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
38位
アクセスランキングを見る>>

深刻・・・かもしれないバグ

最近、自分の作っているWEBアプリやWEBアプリ的なものに、深刻・・・かもしれないバグがあることに気付きました。

いや、滅多に無いバグだと思うんですが(今のところ見たことありません)起こらない可能性が無いわけではないと思うんです。

内容は、
  1. プロセスAがデータxを読み込む
  2. データxを処理してデータyを作る
  3. データyを書き込み
  1. プロセスBがデータxを読み込む
  2. データxを処理してデータYを作る
  3. データYを書き込み

がほぼ同時に実行された場合、「ごく稀にデータyが書き込まれる前にデータYが書き込まれる場合があるのではないか」ということです。

今は↓のような状態だからです。
open

flock

読み込み

close

処理
この青字の部分に隙(他のプロセスが書きかえれる)がある⇒「処理したのにされてない」みたいな事態が発生?
open

flock

書き込み

close


これがひとつのファイルでの話ならいいんですが、複数のファイルを読み込んで処理していく場合に、それぞれのプロセスで処理時間が大きく異なると、こんなことが起こらない可能性が無いわけではないのだろうかと・・・

解決策はわかっていて、
open

flock

読み込み

処理

書き込み

close


とすれば解決できると思うんですが、どうでしょうか。

「これでは解決できない」とか「もっと効率の良い方法がある」とかあったら是非教えてください。
(今作っているWEBアプリ的なものは出来る限りバグを減らしておきたいので)
 


 
   プログラミング/開発全般    TB(0)    CM(0)    EDIT    ページ↑

コメント投稿


 管理者だけに表示

コメント

トラックバック

この記事へのトラックバック:

プロフィール

JDB Luigi

Author:JDB Luigi
どこにでもいるようなありふれた人間・・・という訳でもなく、かと言って怪しい宗教を信仰する変人という訳でも無い。

基本的に掲載しているコード等は煮ていただいても焼いていただいても結構ですが、利用は自己責任にてお願いいします。
また、バグ・アドバイス等もしあればよろしくお願いします。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。