在主线程和从线程之间共享只读数据的理想方法是什么?根据我的理解,有两种选择:
根据我的实验,即使有大数据集,也几乎没有任何性能差异。事实上,1)表现略差于2)。我知道2),kdb将序列化和序列化参数。是否对1)做同样的事情?考虑到全局变量的大小比线程特定参数更大,这可以解释性能的下降。有没有其他方法可以做到这一点?
其次,由于从属线程无法修改全局变量。我认为与主线程共享结果的唯一方法是将它们返回。如果不是这样,请评论。
编辑:在调用桃子之前和之后,根据运行时间来衡量效果。
答案 0 :(得分:0)
通过像这样的桃子将值传递给函数
molarMass
听起来不错,效果很好,除非v非常大。每个线程都获得一个副本(即使v是全局的)。
所以答案取决于你的用例。你有足够的内存吗?给定线程数量,你能负担得起内存副本吗?如果答案是肯定的,那么你可以做到这一点而不会产生太多不良影响(记住分配会影响时间)。
出于这个原因,我更喜欢使用全局变量。