我目前有一個Matlab應用程序接收來自另一個外部應用程序(以JAVA編碼)的請求。與Matlab異步執行
Java應用程序使用Yair Atlman的'Undocumented Matlab'中描述的系統通知matlab。我們可以通知Matlab各種操作,將它們命名爲A和B,這會觸發不同的回調。
問題如下:在某些情況下,Java應用程序可能會在處理第一個通知之前發送新的通知。在一個理想的世界,這裏是我想發生什麼:
- Matlab的接收
- Matlab的開始執行回調
- Matlab的接收到B
- Matlab的持有回調B和繼續執行回調
- Matlab的執行回調乙
這裏就是發生:
- Matlab的接收
- Matlab的開始執行回調
- Matlab的接收乙
- Matlab的暫停回調甲
- Matlab的執行回調乙
- Matlab的完成回調
我試圖幾種可能的解決方案,但都失敗了,我終於設法找到一個奇怪的解決方法,但是這個解決方法來與問題和我必須擺脫它。我無法訪問並行計算。 我的嘗試涉及將收到的操作存儲在靜態隊列中並鎖定回調執行,但由於A永遠不會被清除,所以它會在無限循環中結束。
由於B實際上可能需要A生成的數據,所以完美的解決方案實際上是Java持有B通知,直到它從Matlab接收到「完整」通知。我也嘗試在這裏使用並行性,但Matlab暫停執行,Java從未收到通知並永遠睡眠......
在這一點上,我願意採取任何解決方法,因爲我完全無能爲力的解決方案。
感謝
PS:兩個MATLAB 2011B和2014B必須努力