Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про мидас [Win2k]


Страницы:   1 2 3 4 5 6 7 8

Alexander_K ©   (2004-03-10 15:11:00) 

Приветствую всех!

Написал программу, с тонким клиентом, которая работает с БД Оракл.
Instancing - Multiple use
Threading model - Apartment
Возникла следующая проблема:
При запуске в нескольких клиентах одновременно довольно длительный запросов эти запросы не выполняются параллельно! Выяснил это запуском одновременно длинного запроса и короткого. По идее если они выполняются параллельно - короткий закончиться быстрее... На самом же деле заканчиваются они в таком же порядке как и запускались...
Получается что каждое подключение не обрабатывается в отдельном витке на сервере приложений. Об этом свидетельствует то, что форма сервера приложений при выполнении запроса повисает и ее нельзя перетащить и т.д.

Народ подскажите как решить данную проблему, хотелось бы чтобы запросы выполнялись параллельно..


Reindeer Moss Eater   (2004-03-17 16:54:00) [21]

А с чем ты был несогласен в 85 посте, в котором ты возражал против поста №84 (против подчеркнутого диагноза в посте №84)
?


Michail Dalakov   (2004-03-17 16:46:00) [22]

To Reindeer Moss Eater ©   (17.03.04 16:08) [125]

Да, не бывает такое, чтобы для двух RDM созданных в разных потокахметод Open вызывался в одном потоке. (остальное по контексту выше, дабы не повторяться)

C чем ты не согласен?

Что невозможного или незаконного в этом?[109]

Все возможно


Asdor   (2004-03-17 16:24:00) [23]

2 Alexander_K ©   (17.03.04 16:12) [126]

Код в студию (либо мне на почту)...

Либо смотри секцию инициализации модуля (если таковые есть в билдере). Там должно быть что-то в духе TComponentFactory(или какая-то другая Factory)->Create(ComServer, Класс_Твоего_RDM, Class_ID_ТвоегоRDM, ciMultiInstance, tmApartment) ...


Alexander_K   (2004-03-17 16:12:00) [24]

Asdor ©   (17.03.04 15:46) [123]

В C++ Builder похоже немного по другому как-то, потому что я так пока и не нашел где RDM создается и про TComponentFactory в проекте моем я ничего не нашел...


Reindeer Moss Eater   (2004-03-17 16:08:00) [25]

Это и следовало ожидать, чудес не бывает

пост № 84: Выдан диагноз.
посто № 85: реплика "Так не бывает".

И все по-новой ...


Michail Dalakov   (2004-03-17 15:47:00) [26]

To Nikolay M. ©   (17.03.04 15:33) [121]

Причем здесь счетчик RDM-ов, что в одном потоке нельзя создать два RDM-а?


Asdor   (2004-03-17 15:46:00) [27]

Какая фабрика классов используется при создании RDM?

Должна использоваться TComponentFactory (в Дельфи так называется, в билдере может CComponentFactory).
Если нет - то грабли возможно здесь...


Michail Dalakov   (2004-03-17 15:44:00) [28]

To Alexander_K ©   (17.03.04 15:19) [120]

Это и следовало ожидать, чудес не бывает

Как создаются RemoteComObject-ы?


Nikolay M.   (2004-03-17 15:33:00) [29]


> Alexander_K ©   (17.03.04 15:19) [120]

А счетчик RDM-ов, как где-то в начале советовали, выводишь?


Alexander_K   (2004-03-17 15:19:00) [30]

Сейчас решил посмотреть из диспетчера задач сколько потоков у меня в сервере
При запуске 1 клиента запустился сервер с 4 потоками
При логине к базе в клиенте на сервере стало 5 потоков
При запуске последующих клиентов (6 штук) потоков на сервере не увеличилось!
Выходит как будь-то single...
Но в проекте у меня стоит
Instancing - Multiple use
Threading model - Apartment

В чем грабли?


Michail Dalakov   (2004-03-17 15:18:00) [31]

To Nikolay M. ©   (17.03.04 14:39) [115]

Оставтье oracle в покое он работает как положенно,

?? А может транзакции есть блокирующие?

это на обычный select * from table? не бывает так.


Reindeer Moss Eater   (2004-03-17 15:17:00) [32]

To Alexander_K ©   (17.03.04 14:03) [110]
To Reindeer Moss Eater ©   (17.03.04 13:12) [105]

Господа вы как нибудь определитесь в самом деле?


Господин Alexander_K в посте 110 говорил о создании датамодулей одним потоком

А господин Reindeer Moss Eater в посте 105 говорил о том, что они создаются и их все же несколько, а не один.


Michail Dalakov   (2004-03-17 15:06:00) [33]

To Alexander_K ©   (17.03.04 14:03) [110]
To Reindeer Moss Eater ©   (17.03.04 13:12) [105]

Господа вы как нибудь определитесь в самом деле?

Michail Dalakov ©   (17.03.04 13:10) [104]


Nikolay M.   (2004-03-17 14:41:00) [34]

А может транзакции есть блокирующие? Не заметил такой мысли в обсуждении выше.


Nikolay M.   (2004-03-17 14:39:00) [35]

А может транзакции есть блокирующие? Не заметил такой мысли в обсуждении выше.


Michail Dalakov   (2004-03-17 14:36:00) [36]

To Reindeer Moss Eater c   (17.03.04 14:02) [109]
Вопрос не в том возможно это или нет в принципе, вопрос в том, что это абсурд для данного конкретного случая

На каждое клиентское приложение в отдельных потоках на сервере создаются COM-объекты, каждое из клиентских приложений вызывает метод COM-объекта, который в конечном счете приводит к открытию набора данных,

где в данном случае по твоему должен открываться набор данных?


Michail Dalakov   (2004-03-17 14:36:00) [37]

To Reindeer Moss Eater c   (17.03.04 14:02) [109]
Вопрос не в том возможно это или нет в принципе, вопрос в том, что это абсурд для данного конкретного случая

На каждое клиентское приложение в отдельных потоках на сервере создаются COM-объекты, каждое из клиентских приложений вызывает метод COM-объекта, который в конечном счете приводит к открытию набора данных,

где в данном случае по твоему должен открываться набор данных?


Reindeer Moss Eater   (2004-03-17 14:21:00) [38]

В скольких потоках созданы датамодули и датасеты - рояли не играет.
Важно в каких потоках вызываются методы Open.
Возможно там просто synchronize для этого используется, я не знаю, - тогда все Open идут из одного потока. Главного.


Reindeer Moss Eater   (2004-03-17 14:14:00) [39]

В скольких потоках созданы датамодули и датасеты - рояли не играет.
Важно в каких потоках вызываются методы Open.
Возможно там просто synchronize для этого используется, я не знаю, - тогда все Open идут из одного потока. Главного.


Alexander_K   (2004-03-17 14:03:00) [40]

Michail Dalakov ©   (17.03.04 13:51) [108]

Так вот в этом-то и вопрос, почему Borland C++ Builder 6 создает все в одном потоке?


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо