我正在研究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全部被清除时,同样的事情。