1

对大型数据集进行回归,我有一个巨大的只读矩阵,我想在多个线程之间共享。我查看了执行此操作的各种方式,发现sharedmatrix工具包正是我所需要的。通读教程,我想出了以下设置:

  • Session 0- 只需加载矩阵并使其可用
  • Session 1..n- 工人会议

问题是Session 0只有在所有其他 n 个会话都完成后才能完成。你知道如何让会话等待吗?最好的解决方案是让它等到我杀死它,因为我在远程 linux 系统上运行脚本并且没有一直连接到它。

更新: 最后,在阅读了教程的这一部分之后,我改变了解决问题的方法:

“free”指令将共享内存段标记为删除。注意:在每个附加的会话显式分离或终止之前,它实际上不会被删除。一旦最后一个会话分离,系统将回收分配的段。

这意味着我创建了一个“主”会话来加载矩阵,使其可用,然后开始自己的计算,以及几个使用共享矩阵的“从”会话。即使主会话较早完成,也不会对从属会话造成任何问题,因为共享矩阵保留在内存中,直到使用它的最后一个进程终止。

4

1 回答 1

1

如果你真的想让它无限期地等待,请使用 Eitan 基于pause. 更一般地说,labBarrier您应该使用类似的东西来执行这种同步。

于 2013-05-22T05:50:36.740 回答