Потокобезопасность механизма Matlab API

Проверьте мою библиотеку AbacusUtil :

StreamEx.of(bumperCars)
         .groupBy(c -> Tuple.of(c.getSize(), c.getColor()), BumperCar::getCarCode)
         .map(e -> new DistGroup(e.getKey()._1, e.getKey()._2, e.getValue())
         .toList();

8
задан Amro 21 May 2013 в 23:24
поделиться

4 ответа

Когда я сначала начал использовать механизм, я не натыкался ни на какую документацию относительно потокобезопасности, таким образом, я предположил, что это не было ориентировано на многопотоковое исполнение.

Я использую класс C++ для синхронизации доступа к экземпляру механизма. Для большего количества проектов параллельной обработки я инстанцирую нескольких экземпляров класса механизма.

(редактирование) я использую MATLAB R14 на Солярисе. Я открываю механизм с помощью вызова 'engOpen' и закрываю его с помощью 'engClose'. Моя платформа не отказывает, когда Завершение называет другой поток, чем тот, который назвал Открытым.

3
ответ дан 5 December 2019 в 15:28
поделиться

С точки зрения пользователя интерпретатор Matlab является чисто однопоточным. Для сейфа, вероятно, необходимо сделать весь доступ к механизму от единственного потока.

Обратите внимание, что внутренне, Matlab использует много потоков. Существуют потоки GUI, и в последних нескольких версиях, интерпретатор может использовать несколько потоков негласно. Но, интерпретатор семантически эквивалентен однопоточному интерпретатору (с прерываниями).

1
ответ дан 5 December 2019 в 15:28
поделиться

Вы можете использовать engOpenSingleUse вместо использования engOpen , чтобы несколько потоков работали отдельно. (Только Windows)

1
ответ дан 5 December 2019 в 15:28
поделиться

Из документации ,

Библиотеки MATLAB не являются потокобезопасными. Если вы создаете многопоточный приложений, убедитесь, что только одно поток обращается к движку заявление.

6
ответ дан 5 December 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: