我正在进行一个MATLAB项目,希望有两个并行运行的MATLAB实例共享数据。我将这些实例称为MAT_1
和MAT_2
。具体而言,系统的架构如下:
MAT_1
按顺序处理图像,使用imread
逐个读取图像,并使用imwrite
输出每个图像的结果。MAT_2
使用imread
读取MAT_1
输出的图像,并在其他地方输出其结果。
我认为需要解决的问题之一是确保MAT_2
在MAT_1
完全写入图像后读取图像。
我的问题是:
- 您会如何解决这个问题?我需要使用信号量或锁来防止竞争条件吗?
- MATLAB是否提供锁定文件的机制?(即类似于
flock
的东西,但由MATLAB直接提供,并且可以在多个平台上工作,例如Windows和Linux)。如果没有,您是否知道任何第三方库,我可以在MATLAB中使用它来构建此机制?
编辑:
- 正如@yoda在下面指出的那样,并行计算工具箱(PCT)允许在MATLAB工作进程之间进行阻塞调用,这非常棒。尽管如此,我特别感兴趣的是不需要PCT的解决方案。
为什么我需要
MAT_1
和MAT_2
在并行线程中运行:MAT_2
处理的速度平均较慢(且更容易崩溃),而MAT_1
的输出会供给其他程序和进程(包括人工检查),这些程序和进程不需要等待MAT_2
完成其工作。
答案:
- 对于允许实现信号量但不依赖于PCT的解决方案,请参见下面Jonas的答案
- 对于该问题的其他好方法,请参见下面Yoda的答案