如何在KDB/Q中将用户查询委托给单独的线程

如何在KDB/Q中将用户查询委托给单独的线程,kdb,q-lang,Kdb,Q Lang,在KDB/Q中有没有一种方法可以将用户请求委托给一个单独的线程? 在我的服务器中,我有一个内部计算循环,它以频繁的间隔运行,并且需要时间来完成。当它运行时,所有用户查询都被阻止 如何将计算委托给一个完全独立的线程?我看到的实现多线程的唯一方法是使用peach/.Q.fc,但在这种情况下没有帮助,因为我希望并行处理用户请求和内部循环。我觉得您在这里使用的是一个进程作为一种中心,作为网关和分析引擎-我建议通过异步调用将内部循环发送到单独的进程,然后让它在主线程上异步更新您需要的任何内容,尽管了解更多

在KDB/Q中有没有一种方法可以将用户请求委托给一个单独的线程? 在我的服务器中,我有一个内部计算循环,它以频繁的间隔运行,并且需要时间来完成。当它运行时,所有用户查询都被阻止


如何将计算委托给一个完全独立的线程?我看到的实现多线程的唯一方法是使用peach/.Q.fc,但在这种情况下没有帮助,因为我希望并行处理用户请求和内部循环。

我觉得您在这里使用的是一个进程作为一种中心,作为网关和分析引擎-我建议通过异步调用将内部循环发送到单独的进程,然后让它在主线程上异步更新您需要的任何内容,尽管了解更多关于循环性质的信息将有助于预先确定这样做的任何问题


有关IPC的更多信息,请参阅。

听起来像是您想要使用的。从线程可以做的事情有一些限制,但它们与峰值线程没有太大的不同

生成一个新的Q进程是不可行的,因为有许多变量、表和其他内存全局变量需要共享。因此,我想除了使用peach/.Q.fc并行化计算之外,实在没有办法将Q中的任务委托给单独的线程。基本上是的,您无法查询繁忙的进程。如果您需要同时执行循环和用户查询功能,则有必要重新审视您的体系结构,并想出一些在流程之间共享数据的方法-这可能是发布/订阅模型,也可能是使用磁盘/共享内存段上的数据。根据循环的性质,您可以将所有必要的数据直接发送到执行定时处理的进程,并更新主/用户可访问的进程,而无需在定时进程上全局提供任何数据。