私は OPC クライアントに取り組んでいます。このクライアントは、プロシージャを呼び出します。プロシージャは、1 つの「キュー」テーブルにいくつかの行を挿入します。
このクライアントには別のスレッドもあり、「キュー」テーブルを時々開き、テーブル内の項目に基づいて OPC 項目の値を更新します。各値を更新した後、スレッドは「キュー」テーブルから行をクリアします。
私が望むのは、プロシージャを呼び出し、値をキューに挿入し、他のスレッドが挿入した値をクリアするまで待機して、何か他のことを行うことです。
これは何らかの形で可能ですか?他の言語では、Sleep() で while ループのようなものを使用して、ループを終了するまで行がクリアされたかどうかをテストすることを考えています。
洞察をありがとう
-編集:
もう少し明確にしようと思います:
「INSERT」、「UPDATE」、「FINAL PROCESSING」の 3 つの異なるジョブ タイプがあるとします。
「INSERT」タイプのさまざまなジョブを多数持つことができ、それぞれが一意の ID でキューに挿入されます。
Insert (ID=1, OPCTag=1)
Insert (ID=1, OPCTag=2)
Insert (ID=1, OPCTag=3)
Insert (ID=2, OPCTag=1)
Insert (ID=2, OPCTag=2)
Insert (ID=2, OPCTag=3)
「UPDATE」ジョブは 1 つだけで、常にキューを読み取ってクリアします。
「INSERT」と同じように、そのタイプのジョブも複数あるため、「FINAL PROCESSING」の部分で立ち往生しています。
そのINSERT IDを持つすべての行が「UPDATE」によってクリアされた後、「INSERT ID」にリンクされている正しい「FINAL PROCESSING」ジョブをトリガーする方法がわかりません。
私の「UPDATE」ジョブが「ID = 1」のすべての行をクリアしたとします。ID=1 の最後の行がクリアされたら、FinalProcessingID1 というプロシージャをトリガーする必要があります。ID=2 を全てクリアした場合も同様です。