Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

FireBird Embedded - Thread Safe?   Найти похожие ветки 

 
Sir Alex ©   (2003-07-28 15:07) [0]

см. subj.

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


 
Digitman ©   (2003-07-28 15:32) [1]

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


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

2 Digitman

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


 
Digitman ©   (2003-07-28 16:14) [3]

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

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

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

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


 
Sir Alex ©   (2003-07-28 16:32) [4]

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

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

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

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


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

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

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

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

теперь же

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

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




 
Sir Alex ©   (2003-07-28 17:09) [6]

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

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

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


 
Polevi ©   (2003-07-28 20:41) [7]

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


 
jack128 ©   (2003-07-28 23:04) [8]

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


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


> Sir Alex


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

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


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

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

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

2 Digitman

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

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


 
Alexandr ©   (2003-07-29 10:26) [11]

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


 
Polevi ©   (2003-07-29 10:36) [12]

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


 
Sir Alex ©   (2003-07-29 10:54) [13]

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


 
Anatoly Podgoretsky ©   (2003-07-29 10:54) [14]

Yaffil Personal RC2. Скачать.

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

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

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

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


 
Anatoly Podgoretsky ©   (2003-07-29 10:56) [15]

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

Yaffil Personal ( Embedded).


 
Sir Alex ©   (2003-07-29 11:33) [16]

2 Anatoly Podgoretsky © (29.07.03 10:54)

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

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

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

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


 
Sir Alex ©   (2003-07-29 11:35) [17]

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



Страницы: 1 вся ветка

Текущий архив: 2003.08.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
14-68548
Виталий Чернышенко
2003-08-04 23:40
2003.08.21
Юрий Зотов попал в серьезное ДТП


3-68172
Donor
2003-07-28 11:44
2003.08.21
InterBase


1-68406
The X
2003-08-07 13:28
2003.08.21
Случайное перемешивание данных 1-мерного массива


14-68527
Vlad Oshin
2003-08-05 10:08
2003.08.21
Мастер и Маргарита. Кто-нибудь читал черновые редакции?


14-68481
Карелин Артем
2003-08-06 16:15
2003.08.21
Где найти русифицированные модули к дельфи?