• ベストアンサー

同期を保たせる仕組みについての質問です。

同期させる関係で繋がっている間に、もしデータの遣り取りが一時的に止んだのでしたら、その間には、特殊な手段で御互いの状況を探り合うのでしょうか? 最初・最後とは違いますので、特殊な手段が有るのかも知れない、と思われましたから、可能でしたら、御指導を賜れますと幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.2

> もしデータの遣り取りが一時的に止んだのでしたら、その間には、特殊な手段で御互いの状況を探り合うのでしょうか その通りです。 探り合うという表現よりも、登録しておくという表現があうと思います。 これをコンピュータ用語では、キューイングとか、キュー(Queue:行列、待ち行列)に登録するとか言います。 コンピュータの基本ともなることです。 一般には、「同期をとる」、「排他的制御」とも言われます。 よく知られているのは、ファイルの同時更新の制御は基本機能です。 あるファイルを読み書き可能でオープンした場合、同じ要求のオープン処理は待たされます。 しかし読み込みだけの処理の場合のオープンは、一時ファイルとしてコピーしておき、それを使わせるといったことになります。 これは、「ファイルの排他制御」の同期を取っていることになります。 Enqueue/Dequeueといった用語があり、登録する場合は、Enqueueを出し、登録を解除するときは、Dequeueを出します。 これは、コンピュータを学ぶときに最初に出てくる用語です。 システム開発を行ううえで、複数のファイルの更新処理を行う場合は、コンピュータのこの機能だけでは、いろんな事象の絡み合いで、人(SE)が介在して、同期管理をしなくてはならなくなります。 そのほか、「ウォッチドッグタイマ」と呼ばれる手法もあります。 これは、お互いがお互いを監視しあうときによく使われます。 相手がダウンしていないかを監視し、相手がダウンしていれば警告メッセージを出し、その残した仕事も取り込み処理するといったことも、同期管理の一種です。

UtaShiori
質問者

補足

有り難う御座います。 排他によるとは気付いておりませんでした。

その他の回答 (1)

noname#194317
noname#194317
回答No.1

それは要求される信頼性によって、やり方が変わります。一番お手軽かつ最も広く行われている方法は、相手からの返事が来るまで呼び続けることです。もちろん永久にそんなことはしていられないので、時間や回数を決めておき、それを過ぎてしまったらあきらめて人間に後始末を任せます。 それだと困る場合は、回線を複数にして、1つがダメならもう1つの方に切り替える方法などになります。 さらに高度な、宇宙船のように極度の信頼性と応答速度が要求される場合は、多数決にします。常時5台とかの機械に同じ処理をさせておき、多数決を取るわけです。万一1台がダウン中に決を採ったら2対2になっちゃった、なんてこともあり得るわけですが、その時は仕方がないので「ど~れ~に~し~よ~か~な~」で決めます。まあこうなるのは本当に最悪の最悪ケースですが。

UtaShiori
質問者

補足

有り難う御座います。 ”MUSES-C”の場合にもそうだったのでしょうか?

関連するQ&A