Проверьте мою библиотеку 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();
Когда я сначала начал использовать механизм, я не натыкался ни на какую документацию относительно потокобезопасности, таким образом, я предположил, что это не было ориентировано на многопотоковое исполнение.
Я использую класс C++ для синхронизации доступа к экземпляру механизма. Для большего количества проектов параллельной обработки я инстанцирую нескольких экземпляров класса механизма.
(редактирование) я использую MATLAB R14 на Солярисе. Я открываю механизм с помощью вызова 'engOpen' и закрываю его с помощью 'engClose'. Моя платформа не отказывает, когда Завершение называет другой поток, чем тот, который назвал Открытым.
С точки зрения пользователя интерпретатор Matlab является чисто однопоточным. Для сейфа, вероятно, необходимо сделать весь доступ к механизму от единственного потока.
Обратите внимание, что внутренне, Matlab использует много потоков. Существуют потоки GUI, и в последних нескольких версиях, интерпретатор может использовать несколько потоков негласно. Но, интерпретатор семантически эквивалентен однопоточному интерпретатору (с прерываниями).
Вы можете использовать engOpenSingleUse
вместо использования engOpen
, чтобы несколько потоков работали отдельно. (Только Windows)
Библиотеки MATLAB не являются потокобезопасными. Если вы создаете многопоточный приложений, убедитесь, что только одно поток обращается к движку заявление.