Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
14-1133068112
Aust
2005-11-27 08:08
2005.12.18
Что программировать?


6-1126184275
integery
2005-09-08 16:57
2005.12.18
копирование по сети файлов


14-1133036180
Доктор Семенюк
2005-11-26 23:16
2005.12.18
Родину сняли с выборов


2-1133602150
kop
2005-12-03 12:29
2005.12.18
Свойство


14-1132214544
ЯВ
2005-11-17 11:02
2005.12.18
комп-щик на нары...