Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

TIBDatabase - потокобезопасен?   Найти похожие ветки 

 
Piter ©   (2005-10-31 19:06) [0]

Можно ли к одному TIBDatabase подключать различные TIBQuery, создаваемые в разных потоках?


 
Андрей Жук ©   (2005-10-31 20:10) [1]

Ты вроде бы это спрашивал...
Используй FIB+, там точно потокобезопасно.


 
Sergey Masloff   (2005-10-31 20:36) [2]

Нет.
Насчет FIB+ не знаю но есть поводы сомневаться.


 
Zacho ©   (2005-10-31 23:20) [3]

gds32.dll (fbclient.dll) не потокобезопасен, т.ч. и IBX и FIBPlus тоже непотокобезопасны. Да и нет никакого смысла использовать запросы в разных потоках через одно подключение, т.к. в контексте одного подключения все запросы всё равно выполняются последовательно. Т.ч. общее правило - на каждый поток своё подключение.


 
Piter ©   (2005-10-31 23:53) [4]

Zacho ©   (31.10.05 23:20) [3]
на каждый поток своё подключение


Ты имеешь в виду, в каждом потоке свой Database и свои Query?

Но как это согласуется с:

gds32.dll (fbclient.dll) не потокобезопасен

?

Тогда получается из одного процесса вообще нельзя устанавливать больше одного коннекта к базе???


 
Johnmen ©   (2005-11-01 00:02) [5]

Процесс<>поток


 
Piter ©   (2005-11-01 00:11) [6]

Johnmen ©   (01.11.05 0:02) [5]
Процесс<>поток


да я в курсе :)
А что из этого следует?

Утверждается, что GDI32.dll не потокобезопасен.

Как я это понимаю? Я так понимаю - что в одном процессе нельзя вызывать функции gdi32.dll из разных потоков, верно?

Это соответственно, приводит к выводу:

Piter ©   (31.10.05 23:53) [4]
Тогда получается из одного процесса вообще нельзя устанавливать больше одного коннекта к базе???


 
Zacho ©   (2005-11-01 00:28) [7]

Piter ©   (01.11.05 0:11) [6]
Как я это понимаю? Я так понимаю - что в одном процессе нельзя вызывать функции gdi32.dll из разных потоков, верно?

Это соответственно, приводит к выводу:

Piter ©   (31.10.05 23:53) [4]
Тогда получается из одного процесса вообще нельзя устанавливать больше одного коннекта к базе???


Во-первых, вывод совершенно не верен. Процессы не имееют никакого отношения к кол-ву подключении. Хоть 1000 подключений установи из одного процесса или одного потока.
Во-вторых, из разных потоков вызывать функции gds32.dll можно, но либо вызовы нужно синхронизировать, либо они должны быть в контексте разных подключений.

Ещё раз и немного более развёрнуто повторю общее правило:
В одном потоке можно работать с произвольным количеством подключений.
С каждым конкретным подключением одновременно можно работать только из одного потока. Если нужно работать с БД в разных потоках, то для разных потоков должны быть отдельные подключения.


 
Piter ©   (2005-11-01 01:13) [8]

Zacho ©   (01.11.05 0:28) [7]

ага, все, понял.

То есть, для каждого потока свой TIBDatabase - правильно?


 
Piter ©   (2005-11-01 01:16) [9]

Народ, немного не в тему - а где почитать про транзакции? Я то я никак не пойму зачем нужен TIBTransaction. Особенно эту фразу:

"TIBTransaction provides discrete transaction control over a one or more database connections in a database application."

И также немного непонятно зачем нужен IBSQL, если есть  IBQuery.


 
Zacho ©   (2005-11-01 01:45) [10]

Piter ©   (01.11.05 1:13) [8]
То есть, для каждого потока свой TIBDatabase - правильно?


Совершенно верно.

Piter ©   (01.11.05 1:16) [9]
Народ, немного не в тему - а где почитать про транзакции?


http://www.ibase.ru/devinfo/ibtrans.htm
http://www.ibase.ru/devinfo/ibx.htm

> И также немного непонятно зачем нужен IBSQL, если есть
>  IBQuery

Как раз наоборот, TIBQuery нафиг не нужен, он сделан для облегчения перевода старых проектов с BDE на IBX или если предпологается в будущем переводить проект на BDE-like компоненты. А так для всего чего угодно достаточно TIBDataSet и TIBSQL.


 
Zacho ©   (2005-11-01 01:52) [11]

Piter ©   (01.11.05 1:16) [9]
"TIBTransaction provides discrete transaction control over a one or more database connections in a database application."


Насколько я понял, "more database connections" - имеется в виду механизм 2PC (two phase commit). Подробно о 2PC можешь найти информацию на http://www.ibase.ru/develop.htm



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

Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
2-1133247340
taraban
2005-11-29 09:55
2005.12.18
поможите люди


14-1132841824
stone
2005-11-24 17:17
2005.12.18
Супердевайс :))


1-1132221617
Максим
2005-11-17 13:00
2005.12.18
Как узнать, какие модули из проекта войдут в приложение?


2-1133213003
Fl@sh
2005-11-29 00:23
2005.12.18
Связь между двумя таблицами программно, как??


2-1133364334
Mak55
2005-11-30 18:25
2005.12.18
Добрый вечер! Покажите плиз пример с использ. ProgressBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский