![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ?