![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
потокобезопасность класса TADOConnection [D7, Win2k, WinXP]
Arm79 © (2006-10-30 16:29:00)Уважаемые мастера
Насколько мне известно АДО само по себе потокобезопасно.
А вот насколько потокобезопасны стандартные компоненты для работы с АДО? Особенно интересует ADOConnection
Спасибо.
Сейчас идет этап проектирования, не хотелось бы ошибаться в самом начале.
sniknik (2006-10-30 17:17:00) [21]господя, да за 15сек простая выборка миллионов на пять записей на клиента сделается, на довольно среднем компьютере... что же вы там передаете болезные, что аж на 45 сек, рассчитываете на 4х процессорном сервере...
Arm79 (2006-10-30 17:15:00) [22]
> sniknik © (30.10.06 17:13) [15]
> в ТЗ не должно указываться как делать, там должно быть расписано,
> и максимально подробно, что делать, иначе это не ТЗ а фигня
> какаято, извините....
Прошу прощения, какое есть.
Там есть четкое требование - один коннект
sniknik (2006-10-30 17:13:00) [23]в ТЗ не должно указываться как делать, там должно быть расписано, и максимально подробно, что делать, иначе это не ТЗ а фигня какаято, извините....
Arm79 (2006-10-30 17:11:00) [24]в ТЗ, данном может и не волей бога, но по крайней мере архангелом Гавриилом, сказано что приложение не должно использовать более одного коннекта к базе. :)
далее, в требованиях идет масимально оперативное получение данных и распределение этих данных по получателям.
Количество получаетелей в общем случае неограничено, но фактически на данный момент их трое.
Последовательное выполение в цикле не катит, тк процесс получения данных для каждого из получателей занимает от 1 до 15 секунд (в особых случаях и гораздо большее время). Таким образом интервал обновления информации для каждого получателя может достигать в штатном режиме работы до 45 секунд, что непримлемо.
При этом распределение получения информации и ее обработки по потокам на 4-х процессорном сервере дает очень хорошие результаты (есть разработанный прототип для оценки скорости).
Вот такая вот диллема. Либо скорость работы и несколько коннектов, либо отказ от скорости и переход к одному коннекту
Сергей М. (2006-10-30 17:02:00) [25]
> Arm79 © (30.10.06 16:58) [10]
>
> Да, именно ТЗ.
>
И в том самом ТЗ (не тобой, разумеется, изобретенном, а тебе волею господней данное для разработки ТР), конечно же, фигурирует обязательность кучи потоков, каждый из которых волен в люборй секунд времени использовать по своему усмотнрению одну-единственную коннекцию ... Я правильно понял ?)
Arm79 (2006-10-30 17:01:00) [26]
> Anatoly Podgoretsky © (30.10.06 16:59) [11]
> Ответ получил?
> Если да, то делай тесты.
Да, единственный совет, который я получил - организовать стресс-тестирование :)))
Будем делать.
Anatoly Podgoretsky (2006-10-30 16:59:00) [27]Ответ получил?
Если да, то делай тесты.
Arm79 (2006-10-30 16:58:00) [28]Да, именно ТЗ.
Поэтому и вылез на форум, чтобы не просто сделать, но сделать правильно.
Тут много умных людей сидит, с опытом не чета моему, поэтому не грех и спросить, в т.ч. и азбучные истины, бывает узнаешь что то новое
Сергей М. (2006-10-30 16:53:00) [29]
> требование такое - один коннект на приложение.
Эт чего, ТЗ что ли ?
Anatoly Podgoretsky (2006-10-30 16:52:00) [30]Не получится, только если у каждого потока свой набор компонент и переменных, включая TADOConnection
Arm79 (2006-10-30 16:51:00) [31]
> Сергей М. © (30.10.06 16:49) [4]
>
> > Arm79 © (30.10.06 16:46) [3]
>
>
>
> > неужели для каждого из потоков открывать свое соединение?
>
>
>
> Да.
>
> А что тут сложного ?
требование такое - один коннект на приложение. при этом требуется обеспечить максимальное быстродействие. железо многопроцессорное.
Anatoly Podgoretsky (2006-10-30 16:51:00) [32]
> как лучше организовать работу нескольких потоков, обращающихся
> к базе? неужели для каждого из потоков открывать свое соединение?
>
Не обязательно, но это уже будет однопоточное приложение, все будет последовательно выполняться и уж точно нарвершься на неприятности, если кто то вздумает изменить. Экземляр то один!
Anatoly Podgoretsky (2006-10-30 16:49:00) [33]
> Объект этого класса должен быть создан индивидуально для
> каждого потока.
Ну это само собой, иначе не о чем говорить. Речь идет об переменных потока и влияние на другие экземпляры.
Сергей М. (2006-10-30 16:49:00) [34]
> Arm79 © (30.10.06 16:46) [3]
> неужели для каждого из потоков открывать свое соединение?
Да.
А что тут сложного ?
Arm79 (2006-10-30 16:46:00) [35]в общем то ответы те же что я и думал.
тогда уточняющий вопрос:
как лучше организовать работу нескольких потоков, обращающихся к базе? неужели для каждого из потоков открывать свое соединение?
Сергей М. (2006-10-30 16:42:00) [36]
> Особенно интересует ADOConnection
>
Объект этого класса должен быть создан индивидуально для каждого потока.
Anatoly Podgoretsky (2006-10-30 16:33:00) [37]Стресс тестирование. Словам не верь.