如何让程序等到某个条件满足才能继续执行代码?

时间:2011-10-30 23:01:50

标签: oracle opc

我正在研究OPC客户端。此客户端调用一个过程,该过程又在一个“队列”表中插入几行。

此客户端还有另一个线程,它不时地打开“队列”表并根据表中的项更新OPC项的值。更新每个值后,线程将从“队列”表中清除该行。

我想要的是:我调用该过程,它将值插入队列并等待,直到另一个线程清除了它插入的值,然后执行其他操作。

这有可能吗?在其他语言中,我考虑使用类似while循环的Sleep(),测试行是否被清除,直到它退出循环。

感谢您的任何见解

- 编辑:

我会尝试澄清一点:

假设有3种不同的工作类型:“INSERT”,“UPDATE”和“FINAL PROCESSING”。

我可以从“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)

只有一个“更新”工作,不断阅读和清除队列。

我陷入了“最终处理”部分,因为我也会有这种类型的多个工作,就像“INSERT”工作一样。

我不知道如何触发正确的“FINAL PROCESSING”作业,该作业链接到“INSERT ID”,所有具有该INSERT ID的行都被“UPDATE”清除。

说我的“更新”作业清除了所有“ID = 1”的行。清除ID = 1的最后一行时,我需要触发一个名为FinalProcessingID1的过程。当ID = 2全部被清除时,同样的事情。

0 个答案:

没有答案