В странном случае, когда такой вещи нет, вы также можете взглянуть на разные среды, чтобы реализовать то, что вы хотите. Это может быть чем-то вроде обходного пути, но вы всегда можете связать свой код MATLAB с другими языками (например, Java, .NET, C, ...) и использовать функциональность, к которой вы привыкли. С Java вы совершенно уверены, что ваше решение не зависит от платформы, .NET работает только в Windows (по крайней мере, в сочетании с MATLAB).

отаю над проектом MATLAB, где мне бы хотелось, чтобы два экземпляра MATLAB работали параллельно и обменивались данными. Я назову эти случаиMAT_1 а такжеMAT_2, В частности, архитектура системы:

MAT_1 обрабатывает изображения последовательно, читая их одно за другим, используяimreadи выводит результат для каждого изображения, используяimwrite.MAT_2 читает выводимые изображенияMAT_1 с помощьюimread и выводит свой результат где-то еще.

Одна из проблем, которую я должен решить, это гарантироватьMAT_2 читает вывод изображенияMAT_1 один разMAT_1 полностью закончил писать к нему.

Мои вопросы:

Как бы вы подошли к этой проблеме? Нужно ли использовать семафоры или замки для предотвращения гонки?Предоставляет ли MATLAB какой-либо механизм для блокировки файлов? (то есть что-то похожее наflock, но предоставляется непосредственно MATLAB и работает на нескольких платформах, например Windows & Linux). Если нет, знаете ли вы какую-либо стороннюю библиотеку, которую я могу использовать для создания этого механизма в MATLAB?РЕДАКТИРОВАТЬ :Как указывает @yoda ниже, Parallel Computing Toolbox (PCT) позволяет блокировать вызовы между работниками MATLAB, и это здорово. Тем не менее, я особенно заинтересован в решениях, которые не требуют PCT.

Почему я требуюMAT_1 а такжеMAT_2 работать в параллельных потоках?

Обработка сделана вMAT_2 в среднем медленнее (и более подвержен сбоям), чемMAT_1и выводMAT_1 подпитывает другие программы и процессы (в том числе человеческий осмотр), которые не нужно ждатьMAT_2 делать свою работу.

Ответы:Для решения, которое допускает реализацию семафоров, но не полагается на PCT, см. Ответ Джонаса нижеДля других хороших подходов к проблеме, см. Ответ Йоды ниже

Ответы на вопрос(6)

Ваш ответ на вопрос