Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / fbclient, thread-safe и LoadLibrary / 15 сообщений из 15, страница 1 из 1
29.04.2015, 14:11
    #38948630
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Добрый день!

Работаем над мулти-потоковом проэкте.
В каждом потоке отдельный конекшин и транзакции.

Вопрос, тоже нужно отдельно загрузить и клиент либу и соотвественно отдельные поинты Fisc_attach_database := GetProcAddr('isc_attach_database'); для каждого потока, или одну загрузку хватит для всех?
Или LoadLibrary пох сколько раз вызывать, будет тот же инстанс? Does LoadLibrary create distinct instances?

В IBX похоже одна загрузка, немного посмотрел исходники.
...
Рейтинг: 0 / 0
29.04.2015, 14:19
    #38948642
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin MarcociИли LoadLibrary пох сколько раз вызывать, будет тот же инстанс?
LoadLibrary первый раз загружает, второй и следующие разы увеличивает счетчик использования.
...
Рейтинг: 0 / 0
29.04.2015, 14:28
    #38948650
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin Marcoci,

dll в процесс грузится один раз.
...
Рейтинг: 0 / 0
29.04.2015, 14:37
    #38948663
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Кdv, Цadman, спасибо.

Ок, грузится, получаем хэндл к либу, и будем иметь общие прок адрессы всех isc_* для всех потоков.
Будет это работать реально паралельно если будет вызван isc_attach_database из разных потоков, и дальше запросы с общими прок адрессы? Как бы fbclient сам будет распаралелить выполнение isc_dsql_execute если разные аттачи?

Сорри, может глупые вопросы.
...
Рейтинг: 0 / 0
29.04.2015, 14:46
    #38948674
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin MarcociБудет это работать реально паралельно если будет вызван isc_attach_database из разных потоков
Да.
...
Рейтинг: 0 / 0
29.04.2015, 14:48
    #38948675
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Thanks, Wadman!
...
Рейтинг: 0 / 0
29.04.2015, 15:10
    #38948707
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin Marcoci Как бы fbclient сам будет распаралелить выполнение isc_dsql_execute если разные аттачи?
fbclient ничего не будет распараллеливать, но выполнение операций в коннектах в разных потоках вполне допустимо, и весьма давно.
А библиотека 2.5 содержит специальные штуки для блокировки обращений внутри одного коннекта из разных тредов. Т.е. наоборот, в этом случае препятствует попыткам "распараллеливания" :-)
...
Рейтинг: 0 / 0
29.04.2015, 16:10
    #38948789
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Понял, я чет заблуждался что dll data segment один для всех потоков, так как dll один на весь процесс где потоки крутится.
...
Рейтинг: 0 / 0
29.04.2015, 16:20
    #38948799
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin Marcociя чет заблуждался что dll data segment один для всех потоков
Не заблуждался. Он действительно один. Но при чём тут это?

PS: Тяжело будет на таком проекте, когда о многопоточности знаешь только название...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.04.2015, 16:29
    #38948812
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dimitry Sibiryakov, пока полет нормальный :)
Если успокоили что один поток-коннект все ок с одни и те же прок адреса то все будет ок.
...
Рейтинг: 0 / 0
29.04.2015, 16:43
    #38948833
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin MarcociЕсли успокоили что один поток-коннект все ок с одни и те же прок
адреса то все будет ок.
А на каком основании у тебя были сомнения?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.04.2015, 17:14
    #38948894
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
ну... если дата сегмент один, то и перемены те же для каждого процеса и для всех потоков привязанных к нему.
и вот у меня возникла мысль что образно в function isc_dsql_execute () { int Bla; .... } переменная Bla может обломатся в многопоточности.
...
Рейтинг: 0 / 0
29.04.2015, 17:22
    #38948901
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin Marcociу меня возникла мысль что образно в function isc_dsql_execute () { int
Bla; .... } переменная Bla может обломатся в многопоточности.
А почему ты думаешь, что локальные переменные процедуры хранятся в сегменте данных?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.04.2015, 17:39
    #38948917
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
неправильно думал, извиняюсь :)
...
Рейтинг: 0 / 0
30.04.2015, 11:22
    #38949452
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fbclient, thread-safe и LoadLibrary
Dorin Marcoci,

На клиентской стороне нужно было сериализовать вызовы connect/disconnect.
После получение хэндла вроде как все было хорошо.

В фибах сделали отдельный семафор, потом вроде как уже в 2.5 сделали семафор внутри fbclient.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / fbclient, thread-safe и LoadLibrary / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]