Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
2-1133466205
Officeman
2005-12-01 22:43
2005.12.18
HINT не высвечивается в w98 и wXP


2-1133624922
Катерина
2005-12-03 18:48
2005.12.18
OpenDialog


2-1133619109
Alex72
2005-12-03 17:11
2005.12.18
Ошибка запуска


14-1133262132
stone
2005-11-29 14:02
2005.12.18
Самые дурацкие научные исследования


1-1132172994
gdaujk
2005-11-16 23:29
2005.12.18
ListView без полос прокрутки




   Наверх