首页 文章

在kdb中的主线程和从属线程之间共享数据

提问于
浏览
0

在主线程和从线程之间共享只读数据的理想方法是什么?根据我的理解,有两种选择:

  • 将共享数据设置为main中的全局变量,以便从属线程可以读取它们 .

  • 将共享变量作为参数传递给从属线程 .

从我的实验来看,即使是大数据集也几乎没有任何性能差异 . 事实上,1)表现略差于2) . 我知道2),kdb将序列化和序列化参数 . 是否对1)做同样的事情?考虑到全局变量的大小比线程特定参数更大,这可以解释性能的下降 . 有替代方法吗?

其次,由于从属线程无法修改全局变量 . 我认为与主线程共享结果的唯一方法是将它们返回 . 如果不是这样,请评论 .

EDIT: Performance is measured in terms of runtime before and after call to peach.

1 回答

  • 0

    通过像这样的桃子将值传递给函数

    {}[v;] peach vector

    听起来不错,效果很好,除非v非常大 . 每个线程都获得一个副本(即使v是全局的) .

    所以答案取决于你的用例 . 你有足够的内存吗?给定线程数量,你能负担得起内存副本吗?如果答案是肯定的,那么你可以做到这一点而不会产生太多不良影响(记住分配会影响时间) .

    因此我更喜欢使用全局变量 .

相关问题