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

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

Indy10 + Thread [D7, WinXP]


Страницы:   1 2

Lilu ©   (2006-10-17 10:08:00) 

Подскажите пожалуйста как синхронизировать потоки главный и idServerExecute (indy 10). Если синхронайзом, то где в idServer-е тот поток котрый активный?


umbra   (2006-10-19 10:41:00) [1]

см. umbra ©   (17.10.06 15:20) [26]


Сергей М.   (2006-10-19 08:07:00) [2]

значит у тебя ошибка в программе


Lilu   (2006-10-18 17:50:00) [3]

так не работает


Сергей М.   (2006-10-18 09:18:00) [4]


> отдельную от чего?


Отдельную от всего)

Просто некую ф-цию. например:

function DoSomeThingWithDatabase(DB: TIBDatabase; TA: TIBTransaction): SomeResult;
begin
..
end;


> то есть потоки синхронизировать не нужно


Конечно не нужно !


Lilu   (2006-10-18 08:59:00) [5]


>cоздать отдельную ф-цию

отдельную от чего?

> собственный набор объектов доступа к БД и вызывает ту самую
> функцию со своими объектами-параметрами

то есть потоки синхронизировать не нужно.


Сергей М.   (2006-10-18 08:37:00) [6]


> создавать эти компоненты в потоке соединения повторно ..не по программистски.


Еще как "по-программистски" !


> копировать код процедуры1 не по программистски


А вот это действительно "не по-программистски".

По-программистски же будет создать отдельную ф-цию, реализующую тот самый "нехилый алгоритм" и принимающую параметрами конкретные экз-ры компонентов доступа к БД, с которыми этот "нехилый алгоритм" и будет работать при вызове ф-ции. Каждый поток, заинтересованный в выполнении этого алгоритма, создает свой собственный набор объектов доступа к БД и вызывает ту самую функцию со своими объектами-параметрами.


Lilu   (2006-10-18 05:15:00) [7]


> Жду ответа на свой вопрос - почему "неправильно" ...

может я что-то непонимаю... предположим для выполнения процедуры1 в основном потоке я использую IBTable, OraTable, ZTable и еще кучу других компонент(может порекомендуете ADO, но настройки ... ) и создавать эти компоненты в потоке соединения повторно + копировать код процедуры1 не по программистски.


Anatoly Podgoretsky   (2006-10-17 21:30:00) [8]


> поймать бы того гада, который thread в первый раз "потоком"
> обозвал... %-)

Поздно пить шампанское.


Сергей М.   (2006-10-17 16:15:00) [9]


> umbra ©   (17.10.06 15:51) [28]


С привычкой бороться сложно и глупо.
И все же файбер - это волокно, т.е. составляющая нити, а не собственно нить.


Ketmar   (2006-10-17 15:57:00) [10]

>[28] umbra(c) 17-Oct-2006, 15:51
поймать бы того гада, который thread в первый раз "потоком" обозвал... %-)


umbra   (2006-10-17 15:51:00) [11]

2 Сергей М. ©   (17.10.06 15:29) [27]

для себя я всегда перевожу thread как поток, а fiber как нить. Привычка, однако :)


Сергей М.   (2006-10-17 15:29:00) [12]


> umbra ©   (17.10.06 15:19) [25]



> потоки или нити


Э-э-э ...

М.б. таки будет правильней "нити или волокна" ?


umbra   (2006-10-17 15:20:00) [13]


>  Yarn в моей Indy наследник TObject причем никаких новых
> ни свойст ни методов

Экземпляром какого именно класса будет Yarnв рантайме зависит от того, что использует сервер - потоки или нити. По умолчанию это потоки и Yarnбудет экземпляром TIdThread. Так что см. справку для TIdThread


umbra   (2006-10-17 15:19:00) [14]


>  Yarn в моей Indy наследник TObject причем никаких новых
> ни свойст ни методов

Экземпляром какого именно объекта будет Yarnв рантайме зависит от того, что использует сервер - потоки или нити. По умолчанию это потоки и Yarnбудет экземпляром TIdThread. Так что см. справку для TIdThread


Сергей М.   (2006-10-17 14:19:00) [15]


> Пока сделала через CriticalSection


Тебя поджидает засада.


> > реализовать его работу в другом потоке возможно но неправильно


Жду ответа на свой вопрос - почему "неправильно" ...

По поводу же синхр.сообщений окну осн.потока как варианту синхронизации - рекомендация (как разумная альтернатива для Win) остается в силе


Lilu   (2006-10-17 14:15:00) [16]

в общем  Yarn в моей Indy наследник TObject причем никаких новых ни свойст ни методов
type
 TIdYarn = class(TObject)
 protected
 public
 end;
:( и syncronize у него не наблюдается.
Нашла IdTCPServer1.Contexts - список потоков, мож через него что нить можно сделать?!
Пока сделала через CriticalSection. Пока все работает.
Но с синхронизацией хотелось бы разобраса.


Сергей М.   (2006-10-17 13:49:00) [17]


> umbra ©   (17.10.06 13:42) [21]


Тады умываю руки.


umbra   (2006-10-17 13:42:00) [18]

Сергей М. ©   (17.10.06 12:46) [20]

опубликован.


Сергей М.   (2006-10-17 12:46:00) [19]


> umbra ©   (17.10.06 12:41) [18]


Если у этого самого Yarn как наследника TThread метод syncronize не обубликован, то ситуация ничем не отличается от изложенной в [3]


Сергей М.   (2006-10-17 12:43:00) [20]


> метод основного потока


Давай быть точнее - у потоков как у ОС-объектов нетникаких "методов".


> реализовать его работу в другом потоке возможно но неправильно


И почему же ? Аргументируй ...

Тебя не смущает, что при реализации синхронной логики клиентские запросы будут обслуживаться последовательно, в то время как эти запросы могут быть "тяжелыми" и/или длительными ?


Страницы:   1 2

Наверх

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