Нельзя сказать, что для всей среды JCo она будет поточно-ориентированной или нетЭто зависит от используемых классов и экземпляров.
Экземпляры контейнера данных в JCo, такие как JCoFunction
, JCoTable
, JCoStructure
и JCoRecord
, не являются поточно-ориентированными - к счастью, потому что обычно они не безопасныдоступ к ним осуществляется одновременно из разных потоков, поэтому автоматическая синхронизация этих экземпляров приводит к повышению производительности.
Но классы и статические методы в JCo являются поточно-ориентированными.Например, вам не нужно синхронизировать вызовы с JCoDestinationManager
.
А с JCoDestination
это особый случай.Обычно вам не нужно синхронизировать ваши вызовы с этим экземпляром, потому что он будет внутренне создавать и использовать отдельные объекты клиентских соединений RFC для каждого сеанса.В реализации JCo по умолчанию каждый поток рассматривается как отдельный сеанс, поэтому вы не можете столкнуться с проблемами безопасности потока.Только если инфраструктурная среда регистрирует свой собственный SessionReferenceProvider
во время выполнения JCo и назначит один и тот же идентификатор сеанса нескольким потокам одновременно, тогда может быть конфликтов безопасности потоков для stateful RFC звонит в тот же пункт назначения.В этом случае JCo обнаруживает такую ситуацию с ошибкой и выдает JCoException
с группой ошибок JCO_ERROR_CONCURRENT_CALL
.