Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.49 MB
Время: 0.009 c
14-68535
Артем Запаранюк
2003-08-03 12:31
2003.08.21
Давайте обсудим примерную дату начала времени 64-bit приложений


1-68380
acsoft
2003-08-07 19:58
2003.08.21
Как напечатать файл *.prn из Дельфи?


14-68457
` frizZ. `
2003-08-04 16:13
2003.08.21
php


1-68281
anri
2003-08-06 12:03
2003.08.21
Проверка на соответствие типу


1-68300
BdfyjdX
2003-08-06 16:00
2003.08.21
Каркас минимального веса!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский