【发布时间】:2017-05-05 12:30:58
【问题描述】:
我目前有一个 Matlab 应用程序,它接收来自另一个外部应用程序(用 JAVA 编码)的请求。
Java 应用程序使用 Yair Atlman 的“未记录的 Matlab”中描述的系统通知 matlab。我们可以通知 Matlab 各种动作,命名为 A 和 B,触发不同的回调。
问题如下:在某些情况下,Java 应用程序可能会在处理第一个通知之前发送一个新通知。在一个理想的世界里,这是我希望发生的事情:
- Matlab 接收A
- Matlab 开始执行回调 A
- Matlab 接收 B
- Matlab 持有回调 B 并继续执行回调 A
- Matlab 执行回调 B
这是发生了什么:
- Matlab 接收A
- Matlab 开始执行回调 A
- Matlab 接收 B
- Matlab 暂停回调 A
- Matlab 执行回调 B
- Matlab 完成回调 A
我尝试了几种可能的解决方案,但都失败了,最后我设法找到了一个奇怪的解决方法,但是这个解决方法有问题,我必须摆脱它。我无法访问并行计算。 我的尝试涉及将接收到的操作存储在静态队列中并锁定回调执行,但由于 A 永远不会被清除,它最终会进入无限循环。
由于 B 实际上可能需要 A 生成的数据,因此完美的解决方案实际上是 Java 保留 B 通知,直到它收到来自 Matlab 的“完整”通知。我也尝试在这里使用并行性,但 Matlab 暂停了它的执行,java 从未收到通知并永远休眠......
在这一点上,我愿意采取任何解决方法,因为我完全不知道一个强大的解决方案。
谢谢
PS:必须同时在 matlab 2011b 和 2014b 上工作
【问题讨论】:
标签: java matlab asynchronous parallel-processing