powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
24 сообщений из 24, страница 1 из 1
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319632
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли в 3.0 делать параллельные вызовы API из разных потоков, использующих 1-о соединение?

Раньше в Embedded 2.5 это работало, а теперь в 3.0 это приводит к бесконечному зависанию при вызове isc_dsql_prepare. В некоторых случая и к Access Violation в Engine12.dll.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319634
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

никогда это не работало.
один поток - одно подключение
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319637
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. о чем здесь говорилось поломали?

kdvВ 2.5 паоявилась только синхронизация вызовов API, которая в результате дает стабильную работу клиента, даже если приложение пытается выполнять вызовы API для одного коннекта из разных тредов.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319640
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor,

В 2.5 это работало как с Embedded так и через TCP/IP.
Сейчас в 3.0 с Embedded не работает.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319641
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

ты что-то путаешь.

В 3.0 без изменения конфига Embedded работает как SS, в 2.5 - SC. Поэтому подключение к одной и той же БД из разных процессов (программ) в 3.0 без изменения конфига не возможен, ибо файл БД открывается в эксклюзивном режиме. Надеюсь ты это имел ввиду?
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319646
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovpastor,

В 2.5 это работало как с Embedded так и через TCP/IP.
Сейчас в 3.0 с Embedded не работает.

ну допустим. Что с того, даже если так можно делать в 2.5, то это не обозначает что нужно. Профита от этого 0, потому как параллельно всё равно в одном коннекте ничего работать не будет. Если хочешь чтобы исправили, то делай воспроизводимый пример того что работало в 2.5 и перестало в 3.0 и в трекер.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319647
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Это понятно, спасибо.
Но вопрос касался использования 1-го коннекта из разных потоков.
Тестировал на установленном Classic, при подключении без указания протокола, т.е. использовался embedded (engine12).
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319653
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovТ.е. о чем здесь говорилось поломали?
нет. Это стало как дверь в одноместный сортир. Раньше двери не было. Но все равно в таком сортире сидеть может только один.
Собственно, параллельного выполнения операций в одном коннекте нет практически ни в одной СУБД, потому что это нафиг никому не надо (или не реализуется из-за особенностей транспорта в коннекте).

Игрища с параллельным доступом в одном коннекте интересны разве что с точки зрения повышения собственного уровня, но не более того. Эти операции все равно остаются сериализованными, т.е. никакой параллельности в одном коннекте не будет.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319664
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvСобственно, параллельного выполнения операций в одном коннекте нет практически ни в одной СУБД
Никто не говорит о параллельном выполнении (в Oracle, кстати это работает). Пусть они выполняются последовательно, но с синхронизацией на уровне fbclient.dll.

Речь о проблеме зависания всех потоков, использующих 1 коннект.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319667
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

тесткейс и в трекер
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319692
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovо параллельном выполнении (в Oracle, кстати это работает)
именно работает, в одном коннекте? хотелось бы подтверждения, ссылкой на доку Оракла. Я там такого пока не нашел.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319697
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvименно работает, в одном коннекте?
Так же как и в Firebird: полная сериализация вызовов API.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319710
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

rashid.abzalov утверждает, что прям параллельно из тредов в одном коннекте все работает. Я может не те ключевые слова использую, но ... а, вот, нашел, по 10g

https://docs.oracle.com/cd/B19306_01/appdev.102/b14250/oci09adv.htm

Once spawned, threads run asynchronously with respect to one another. They can access common data elements and make OCI calls in any order. Because of this shared access to data elements, a synchronized mechanism is required to maintain the integrity of data being accessed .

The mechanism to manage data access takes the form of mutexes (mutual exclusivity locks), that is implemented to ensure that no conflicts arise between multiple threads accessing shared internal data that are opaque to users. In OCI, mutexes are granted for each environment handle.

Собственно, не вижу никакой параллельности.

Кстати, в доке на 12g уже по другому написано
http://docs.oracle.com/database/121/LNOCI/oci08sca.htm#LNOCI16587
но тем не менее

Implementing Thread Safety
Pass a value of OCI_ENV_NO_MUTEX for the mode of OCIEnvNlsCreate(). The application must set mutual exclusion locks (mutex) for OCI calls made on the same environment handle. This has the advantage that the mutex scheme can be optimized to the application design. The programmer must also ensure that only one OCI call is in process on the environment handle connection at any given time.

Pass a value of OCI_DEFAULT for the mode of OCIEnvNlsCreate(). The OCI library automatically gets a mutex on every OCI call on the same environment handle.


т.е. один хрен - по умолчанию синхронизация через мютексы, или человек сам должен эту синхронизацию делать.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319713
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Да, значит я ошибался ...

The bulk of processing of an OCI call happens on the server, so if two threads using OCI calls go to the same connection, then one them could be blocked while the other finishes processing at the server.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319736
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvт.е. один хрен - по умолчанию синхронизация через мютексы, или человек сам должен эту
синхронизацию делать.

Ну так я так и сказал. Единственное отличие от Firebird это добровольная возможность
отключить внутреннюю синхронизацию в пользу своей собственной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39319756
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovТ.е. о чем здесь говорилось поломали?

kdvВ 2.5 паоявилась только синхронизация вызовов API, которая в результате дает стабильную работу клиента, даже если приложение пытается выполнять вызовы API для одного коннекта из разных тредов.


был ньюанс с созданием подключения из разных потоков.

у нас в исходниках был свой мьютекс, в фибах свой, с 2.5 появился в fbclient.

работа с данными всегда была однопоточной.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320163
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оправил в трекер .
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320253
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

один уточняющий вопрос. А у тебя сервис 3.0 при этом запущен? Потому как с 2.5 тут сравнивать немного не корректно. Там embedded отдельный дистрибутив.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320295
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисА у тебя сервис 3.0 при этом запущен?
- В примере из трекера - без установленного сервера, приложение лежит рядом с распакованным "Zip kit for manual/custom installs".
Считай embedded.
- В примере из изначального сообщения этой ветки - с установленным сервером, но при подключении в режиме embedded.
Так, что никакой разницы нет.

Симонов ДенисПотому как с 2.5 тут сравнивать немного не корректно. Там embedded отдельный дистрибутив.
В свете использования "Zip kit for manual/custom installs" - думаю, что корректно.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320322
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

да нет. Как раз таки не совсем. Дело в том что как только к твоей БД подключится что-то через нормальный SS сервер, то через embedded к той же БД уже не подрубиться.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320356
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисДело в том что как только к твоей БД подключится что-то через нормальный SS сервер, то через embedded к той же БД уже не подрубиться.

Да, это известно и хорошо описано в документации. И это еще один аргумент в пользу бессмысленного использования Embedded сервера одновременно с полноценно установленным.

Но не понял, как ваше замечание соотноситься с изначальной проблемой?
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320368
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rashid.abzalov,

Коннект-то 1, а потоков использующих его много.
Так, что зависание из-за невозможности подсоединится 2-м коннектом - исключается.
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320374
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

погаси сервис и проверь ещё раз
...
Рейтинг: 0 / 0
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
    #39320388
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Дениспогаси сервис и проверь ещё раз

Погасил, проверил - результат аналогичный.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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