Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FireBird Embedded - Thread Safe?


Sir Alex ©   (2003-07-28 15:07:00) 

см. subj.

Например Yaffil Embedded не является ThreadSafe, что и написано в документации. А вот про FireBird я так ничего и не нашел...


Sir Alex   (2003-07-29 11:35:00) [1]

Во, нашел, оказывается они эту инфу закинули в раздел новостей.


Sir Alex   (2003-07-29 11:33:00) [2]

2 Anatoly Podgoretsky © (29.07.03 10:54)

ВОТ!!! Это то, что мне и нужно было....

Правда RC2 у меня уже был (сборка 872b, как оказалось это и есть RC2).

А где Вы эту информацию нашли? вроде как на ibase.ru нигде не видел. А в changelog"e к 872 ничего такого нет... А UserGuid относится к 857 сборке (наверное еще RC1).

В общем буду эксперементировать...


Anatoly Podgoretsky   (2003-07-29 10:56:00) [3]

Забыл эту информацию привести, а то может создать впечатление, что речь идет о чем то другом

Yaffil Personal ( Embedded).


Anatoly Podgoretsky   (2003-07-29 10:54:00) [4]

Yaffil PersonalRC2. Скачать.

1) Полная поддержка всего API (на isc_add_user и т.п. возвращает ошибку в статусе - @feature is not supported@)
2) Поддержка сервисов
3) Многопоточность
4) Требует только WinSock1 (т.е. будет запускать на голой Win95)

В дальнейшем планируется ввести возможность коннекта через YaP к другим серверам, т.е. использовать его и как клиентскую gds32.dll.

Вот отметил некоторые моменты
1. Personal - это всегда означало не сетевой вариант
2. вробе ьы как декларируют Многопоточность
3. здесь одназначно говорят о локальном режиме работы

На удивление много дают информации :-)


Sir Alex   (2003-07-29 10:54:00) [5]

2 Polevi © (29.07.03 10:36)
Embedded - ДА.


Polevi   (2003-07-29 10:36:00) [6]

2Sir Alex © (29.07.03 10:25)
несколько соединений этот сервер тоже не поддерживает ? он что однопользовательский чтоли ?


Alexandr   (2003-07-29 10:26:00) [7]

скорее да, чем нет.


Sir Alex   (2003-07-29 10:25:00) [8]

2 Polevi Не поможет, см. ниже

2 jack128 Читайте сабж, мне надо Embedded вариант, а не обычный сервер (в ФАКе про него ничего не сказано).

2 Digitman

Вот описание Внедренного Дятла:
---------------
Встраиваемый сервер может использоваться только в однопоточных приложениях.
Существующее ядро InterBase/Firebird/Yaffil не является безопасным для использования из нескольких потоков (thread-safe). Глобальные структуры данных сервера не защищены от одновременного изменения. Кроме того, внутри ядра широко используется локальное состояние потока. Таким образом, поведение сервера будет непредсказуемым при вызове функций сервера с нескольких потоков одновременно, а также при использовании соединений, первоначально открытых в другом потоке.
--------------

Так вот весь вопрос в том, накладывает ли такие же ограничения на Firebird Embedded или нет?


Digitman   (2003-07-29 09:49:00) [9]


> Sir Alex


Безусловно, каждый кодовый поток процесса должен иметь свой собственный полный набор объектов доступа, начиная с IBDatabase, IBTransaction и заканчивая IBDataSet, IBQuery и т.п.

Случай с блокировкой файла - это из другой оперы, в том случае IBExpert явл-ся прежде всего другим процессом.
Не могу ничего сказать про ВнедренногоДятла, но, вероятно, он вносит ограничения на доступ к одной и той де базе со стороны более чем одного процесса (а не более чем одного потока одного и того же процесса)


jack128   (2003-07-28 23:04:00) [10]

читаем http://www.ibase.ru/v6/ib6faq.htm#threads...


Polevi   (2003-07-28 20:41:00) [11]

IBConnection в каждом потоке


Sir Alex   (2003-07-28 17:09:00) [12]

То, что я написал в начале - все правда.

А потом я пытался привести пример, но получился не совсем удачным..

В общем:
Мне надо иметь в моем приложении основной поток и один дополнительный, оба должны независимо работать с одной и той же БД!
( На сколько я понимаю - это и есть многопоточность)


Digitman   (2003-07-28 17:00:00) [13]

непонятно...

сначала ты пишешь

"В основном потоке работает пользовательский интерфейс, а в дополнительном выполняются длительные по времени или множественные SQL запросы "

теперь же

"она делает db.Connect, потом я загружаю IBExpert, пытаюсь подключится к той-же БД и получаю Fatal Error: Can"t lock file. Т.е. когда один поток подключается, то он лочет файл БД."

и причем эдесь мультипоточнось ? просто кл.часть, загружаемая в ВАП 2, определяет факт подключения к такой-то базе базе со стороны той же библ-ки, загруженной в ВАП 1 и отказывает в подключении ! Это же вполне нормально)... и сингл-поточность здесь ни при чем как бы



Sir Alex   (2003-07-28 16:32:00) [14]

Так в том то и дело, что у меня 2 потока X,Y. А Yaffil не умеет работать с одной базой из двух потоков одновременно.
Например я загружаю свою прогу, она делает db.Connect, потом я загружаю IBExpert, пытаюсь подключится к той-же БД и получаю Fatal Error: Can"t lock file. Т.е. когда один поток подключается, то он лочет файл БД.

Мысля: А что будет если я в программе создам один экземпляр FIBDatabase, а в потоке буду его юзать его же, а не создавать новый? Т.е. возможно ли:

Приложение Поток 1
| |
TpFIBDatabase <-- TpFIBDataSet2
|
TpFIBDataSet1

Т.е. возможно ли одновременное обращение DS1 и из потока DS2?


Digitman   (2003-07-28 16:14:00) [15]

термин thread-safe здесь, видимо, не совсем по теме.

скорее речь идет о нечто подобном threading model

рискну утверждать, что вызовы кл.библиотеки, загруженной и инициализированной в некоем код.потоке X, будут нормально работать в случае дальнейших вызовов эксп.ф-ций этой библ-ки в том же код.потоке X.

О каком код.потоке идет речь и какому ПО принадлежит кл.библ-ка (YA / FB /IB) - абсолютно монопенисуально.


Sir Alex   (2003-07-28 16:00:00) [16]

2 Digitman

То, что у меня есть два потока (основной и дополнительный) в которых идет работа с БД. В основном потоке работает пользовательский интерфейс, а в дополнительном выполняются длительные по времени или множественные SQL запросы (с помощью очереди).
Так вот, на сколько я понимаю Yaffil Embedded не позволяет организовать работу в таком варианте. А FireBird не знаю...


Digitman   (2003-07-28 15:32:00) [17]

А что ты подразумеваешь в д.с. под термином thread-safe ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо