【问题标题】:C++ API: how to subscribe to a change in a particular variable on a KDB/Q server?C++ API:如何订阅 KDB/Q 服务器上特定变量的更改?
【发布时间】:2017-04-17 19:47:17
【问题描述】:

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

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

感谢您的帮助!

【问题讨论】:

    标签: c++ api push-notification kdb


    【解决方案1】:

    如果 var 是全局变量,您可以使用 .z.vs(值集) - 比使用计时器不断检查 var 的值更简洁...

    当全局更改时 - 将触发此处理程序,您可以在其中实现逻辑以向您的 C 应用程序发送消息。

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

    【讨论】:

    • @Chromozorz,谢谢你的回复!我的理解是,当 any 全局变量发生变化时,.z.vs 会向 all 进程发送通知。我想知道 particular 进程是否可以订阅 particular 变量的更改。还是我必须自己编写所需的自定义代码?
    • 我想你可以在 .z.vs 中添加逻辑。有一个字典将您的流程映射到他们订阅的变量。然后在 .z.vs 内部使用变量进行查找,该变量将返回订阅的特定进程的句柄并向它们发送消息。 varmap:var1var2var3!5 6 7i`.z.vs:{varmap[x[0]]("Your particular variable has changed")}
    • @Chromozorz 谢谢!这就是我正在考虑做的事情,但想检查轮子是否已经被发明;)我猜不是......
    猜你喜欢
    • 2016-06-03
    • 2018-02-21
    • 2023-03-26
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多