Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизIndy 10 и синхронизация.... Найти похожие ветки
← →
Eraser © (2004-12-23 17:32) [0]Подскажите каким образом в Indy 10 в событии OnExecute (TidTCPServer) можно синхронизироваться с основным потоком. Synchronaize больше нету :( !!!
Спасибо!
← →
Reindeer Moss Eater © (2004-12-24 09:01) [1]Send/PostMessage не отменяли еще.
← →
Digitman © (2004-12-24 10:50) [2]
> Eraser © (23.12.04 17:32)
в TIdThread (непрямой наследник которого в виде TIdPeerThread передается параметром в обработчик) метод Synchronize перенесен в секцию public, что дает возможность прямого вызова этого метода .. в остальном все по-старому, т.е. точно так же как синхронизация в обычном TThread
← →
Eraser © (2004-12-29 16:22) [3]а где взять этот TIdPeerThread? Там передаётся TidContext....
← →
Eraszer (2004-12-29 16:23) [4]а где взять этот TIdPeerThread? Там передаётся TidContext....
← →
Digitman © (2004-12-29 16:47) [5]шо ты мне мОзги паришь ?)
я тыкнул Ф1 и поимел сюда :
TIdServerThreadEvent = procedure (AThread: TIdPeerThread) of object;
Event handler for peer thread execution.
property OnExecute: TIdServerThreadEvent;
Description
OnExecute is an event handler for TIdServerThreadEvents. OnExecute occurs when a TIdPeerThread attempts to perform the TIdPeerThread.Run method. OnExecute receives AThread as a parameter, representing the TIdPeerThread thread that will be started.
Assign a TIdServerThreadEvent event handler procedure to OnExecute to respond to the event notification.
Use CommandHandlers and CommandHandlersEnabled to provide finer control over commands executed for a peer thread connection.
ну и где ты там, нафих, видишь какой-то там TidContext ?
що до мэне, то я нэ бачив там никаких TidContext ..
p.s.
фрагменты справки, на основании которых смею произнести то самое "нафих", взяты именно из станд.справки в Д7
← →
Eraszer (2004-12-29 21:01) [6]Понял! Ты мне рассказываешь про indy 9, я на нём уже кучу проектов сделал )), а я тебе про Indey 10!!!
фпагмент из справки:
Executing client connections are now stored in the Contexts property, instead of the ActiveThreads property. Contexts will contain instances of the class indicated in ContextClass. The ContextClass property indicates the type of executable task created in listener threads for client connections and added to the Contexts property. TIdContext essentially replaces the TIdPeerThread class used in Indy 9, and extends the concept to support fibers as well as native threads.
The Scheduler replaces the ThreadMgr used in Indy 9. There are basically two types of Schedulers available for TIdTCPServer: Thread-based and Fiber-based. Each is designed to work with a specific type of executable task that represents the client connections. There are further Scheduler refinements that allow a pool of pre-allocated Threads, or Threads which perform scheduling for dependent Fibers.
The default Scheduler implementation in TIdTCPServer uses a Thread to represent each client connection. Threads are a common feature found on all platforms and Operating Systems hosting the Indy library.
While TIdTCPServer does not use Fibers unless a Scheduler supporting Fibers is assigned (TIdSchedulerOfFiber), the Yarn abstraction is an important one that is central to the use of the Scheduler. When the Scheduler supports Threads, it deals only with a Yarn at the Thread level. When the Scheduler supports Fibers, it deals with a Yarn at the Fiber level.
As a result of the change from TIdPeerThread to TIdContext, most code that implements an event handler procedure will need to be updated. Since the type passed as an argument for the thread of execution has changed, the procedure must be updated to accept the new argument type.
For example, the Indy 9 code for an OnExecute event handler:
procedure TMyForm.ServerExecute(AThread: TIdPeerThread);
begin
...
The Indy 10 code for an OnExecute event handler:
procedure TMyForm.ServerExecute(AContext: TIdContext);
begin
...
вот такие дела...
← →
Digitman © (2004-12-30 08:47) [7]
> Eraszer (29.12.04 21:01) [6]
> я тебе про Indey 10!!!
точно) .. сразу и не обратил внимание именно на 10-ку ..
10-шного кода у меня нет под рукой, поэтому посмотреть, что из себя TIdContext изнутри представляет, не могу ..
ну если ты пишешь искл-но под Win32, то поступи проще, т.с. "в лоб" - реализуй собственный код синхронизации, по аналогии с тем что реализован в TThread .. не трудно же вовсе ..
← →
Eraszer (2004-12-30 13:55) [8]Я тоже над этим думал, наверное так и сделаю, типа CreateMutex ))
Сейчас уже готова финальная исправленная версия Indy 10 советую скачать, уже и справка к ней подробная есть. Много новых фишек появилось.
Спасибо ))
← →
Digitman © (2004-12-31 08:52) [9]
> Eraszer (30.12.04 13:55) [8]
> Я тоже над этим думал, наверное так и сделаю, типа CreateMutex
зачем тебе с мьютексами заморачиваться, если пишешь только под Win32 ? .. обычный SendMessage(), как это было сделано в TThread.Synchronize Д5 - просто, надежно и со вкусом)
← →
Eraszer (2004-12-31 16:02) [10]с мьютексами проще в плане передачи параметро через глобальные переменные, а с сообщниями можно передать только 2 параметра, а заморачиваться со списками неохота...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c