2013-05-21 55 views
1

對大數據集做迴歸處理,我有一個龐大的只讀矩陣,我想在幾個線程之間共享。我已經看過了這樣做的各種方式,並發現sharedmatrix工具包正是我所需要的。通過tutorial閱讀,我想出了以下設置:Matlab中的共享內存和等待會話

  • Session 0 - 只是加載了基體,並使其可
  • Session 1..n - 工會議

的問題是,Session 0有隻有在所有其他n次會話完成後才能完成。你知道如何讓會話等待嗎?最好的解決方案是讓它等到我殺了它,因爲我在遠程Linux系統上運行腳本,並且一直沒有連接它。

UPDATE:

「自由」指令標記爲刪除共享內存段: 在我已經改變了我的問題解決辦法結束,閱讀本教程的這一部分之後。 注意:直到每個連接的會話 明確分離或終止,它才被實際刪除。一旦上次會話 分離,系統將回收分配的分段。

這意味着我已經創建了一個加載矩陣,使其可用並開始自己的計算的「主」會話,以及使用共享矩陣的多個「從」會話。即使主會話較早完成,對於從會話也不會造成問題,因爲共享矩陣保留在內存中,直到最後一個使用它的進程終止。

+0

也許等待用戶按下某個鍵(例如「暫停」)就足夠了? –

+1

如果您確實想要無限期地等待,請使用Eitan的解決方案。更一般地說,像['labBarrier'](http://www.mathworks.com/help/distcomp/labbarrier.html)這樣的東西就是你應該用來執行這種同步的東西。 –

+0

@JoshuaBarr您的評論是一個很好的回答。爲什麼不把它作爲答案提交? – shoelzer

回答

1

如果您真的想讓它無限期地等待,請使用基於pause的Eitan解決方案。更一般地說,像labBarrier這樣的東西就是你應該用來執行這種同步的東西。