Форум: "Базы";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c