3

Matlab (2012b) で、データを送信する前に SPMD によって作成された 1 つのスレッドを停止する方法はありますか? スレッド 2 はスレッド 1 からデータを受け取るための有限サイズのバッファしか持たず、matlab によると、データ転送が完了する前に labSend() が返されるため、理論上、スレッド 1 はシステムが実行されるまでスレッド 2 にデータを送信し続けることができます。メモリ不足:

私がやりたいことは次のようなものです:

 spmd (2)

  if labindex==1
    %...
    if (BufferAtLab2isNotFull)
        labSend(data, 2);
    end
    %...
  elseif labindex==2
    if (BufferNotFull)
      labReceive(data, 1);
    end
    %...

  end
 end

C/C++ では、共有メモリのマルチスレッドを使用してこれを行うのは非常に簡単ですが、matlab では、チェックする共有リソースがないため、非常に難しいようです。

4

1 に答える 1