在 Matlab (2012b) 中,有没有办法在 SPMD 创建的一个线程发送数据之前停止它?因为线程 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 中似乎很难,因为没有可检查的共享资源。