Форум: "Базы";
Текущий архив: 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