2017-04-17 51 views
-1

您能否帮我理解如何通过C++ API订阅Q服务器上特定(全局)变量的更改通知?C++ API:如何订阅KDB/Q服务器上特定变量的更改?

示例:在Q服务器上,我有一个变量var:0。我希望服务器在var的值发生变化时通知感兴趣的(即那些订阅了它的)C++客户端。可能吗?如果是这样,你能否提供一个简单的例子来说明如何设置它?

谢谢你的帮助!

回答

2

如果var是一个全球性的,你可以使用.z.vs(设置值) - 清洁不是不停地检查一个带有计时器的VAR值...

当全球变化 - 这个处理程序将被触发,你可以在其中实现逻辑来发送消息给你的C应用程序。

http://code.kx.com/q/ref/dotz/#zvs-value-set

+0

@ Chromozorz,谢谢你的回复!我的理解是,当任何**全局变量发生变化时.z.vs会将通知发送给**所有**进程。我想知道** **特定**过程是否可以通过**特定**变量的变化进行订阅。或者我必须自己编写所需的自定义代码? –

+0

我想你可以在.z.vs中添加逻辑。有一个字典将您的流程映射到他们订阅的变量。然后在.z.vs中使用这个变量进行查找,该变量将返回订阅了该特定进程的句柄并向它们发送消息。 'varmap:'var1'var2'var3!5 6 7i' '.z.vs:{varmap [x [0]](“Your variable has changed”)}' – Chromozorz

+0

@ Chromozorz谢谢!这正是我想要做的事情,但是想检查车轮是否已经发明了;)我猜不是... –