powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JavaExtreme и потоки
5 сообщений из 5, страница 1 из 1
JavaExtreme и потоки
    #38753229
TryCache
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

В моей программе есть несколько потоков, для простоты, два. Я использую интерфейс Java Extreme для доступа к данным Cache 2014.1. Согласно документации я создал по одному соединению на каждый из потоков. Если поток №1 пишет данные, а поток №2 читает данные и произойдет такая ситуация, что читающий поток начнет читать тот же узел, в который пишущий поток пишет данные, какие возможны проблемы? Должен ли я явно где-то блокировать что-то? Возможно, завести в потомках разделяемого узла (который в данный момент пишется) какой-то флаг?

И еще, допустим мне нужно записать достаточно большой массив байт в узел. Например, 10 Мбайт. Я разбиваю этот блок на несколько блоков (например, по 3 Мб) и пишу их последовательно. Что произойдет, если читающая программа начнет читать блок данных в момент записи? Насколько я понимаю, операция записи блока в 10 МБайт не будет атомарна, а вот операция записи узла в 3 Мб уже будет атомарной, т.е. пока данные в 3 Мб реально не запишутся целиком читающая программа не "увидит" часть из них. Это так?
...
Рейтинг: 0 / 0
JavaExtreme и потоки
    #38753261
TryCache
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут http://docs.intersystems.com/documentation/cache/20102/pdfs/BLXT.pdf на странице 7 было указано:

eXTreme intraprocess connections are limited to one connection per thread.


А вот тут http://docs.intersystems.com/ens20122/csp/docbook/DocBook.UI.Page.cls?KEY=BXJV_globals#BXJV_globals_connect было указано:

It is important to understand that only one eXTreme Connection instance can exist in a process, and all Connection variables are references to that instance. When the Globals API and other eXTreme APIs are used in the same process, they will share the same underlying connection (see “Using the Globals API with Other eXTreme APIs”).


Так что все-таки per a process, not per a thread

С чем, собственно, я и столкнулся. Как быть, если нужно из разных потоков обращаться: организовывать очереди, использовать блокировки. что-то еще?
...
Рейтинг: 0 / 0
JavaExtreme и потоки
    #38753272
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TryCache,
ну хоть кто-то еще, как оказалось, использует Java eXTreme. Вполне могу понять несколько раздраженный тон Ваших вопросов, сам тоже с этим мучаюсь. К сожалению, досконально ответить на Ваши вопросы пока не могу, если что-нибудь нарою в экспериментах - обязательно поделюсь. Ну и Вы поделИтесь тоже.
...
Рейтинг: 0 / 0
JavaExtreme и потоки
    #38753366
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TryCache,

Никаких самодельных флагов, только блокировки: флаги - это те же данные, для их использования также нужны блокировки.
...
Рейтинг: 0 / 0
JavaExtreme и потоки
    #38754694
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TryCache ,

Посмотрите готовый пример многопоточного XEP-приложения - Threads.java .

Код: java
1.
2.
3.
ConnectionContext.setOption(ConnectionContext.THREADING_MODEL, ConnectionContext.THREADING_MODEL_THREAD_SPECIFIC);
// или
ConnectionContext.setOption(ConnectionContext.THREADING_MODEL, ConnectionContext.THREADING_MODEL_NON_THREAD_SPECIFIC);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JavaExtreme и потоки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]