[Lazarus] GUI development for web UI

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Thu Dec 2 11:38:29 CET 2010

On Thu, 2 Dec 2010, Dariusz Mazur wrote:

> W dniu 2010-12-02 09:25, michael.vancanneyt at wisa.be pisze:
>> On Thu, 2 Dec 2010, Dariusz Mazur wrote:
>>>>> ExtPascal uses threads to handle multiple connections. I remember you
>>>>> don't accept this way, right? BTW, what is there wrong if ExtPascal
>>>>> uses threads?
>>>> I accept using threads, but not the way ExtPascal does it. Threads should 
>>>> be
>>>> optional. In extpascal, the thread is equal to the session: if you have 
>>>> many
>>>> sessions, the application will create as many threads as there are 
>>>> sessions.
>>> I use different architecture: each session has own thread and each 
>>> connection has own thread. Sessions are separated from connections and 
>>> communicate via FIFO queue.
>>> Session runs whole life time in the same thread. With this i can use modal 
>>> form and thread var in the same manner, as normal (desktop) application.
>> I understand this is the easy way.
>> But you don't need this architecture to do that. As long as a single 
>> request
>> runs in a single thread, there is no problem with decoupling sessions and
>> threads, and still be able to keep everything in memory.
> I dont understand.
> I parse single request in single thread (for each request new thread)
> and what can I do (other) with sessions?

One scenario looks like this:
- Request comes in (on whatever thread).
- Determine session data (your form) for the request.
   Session data is in a global list.
- Find a thread to handle the request.
- Pass session data to thread and let it handle request.

Another way is
- Connection is accepted.
- An idle thread to handle request is found.
- Thread looks up session data from data in request.
- Thread handles request using found session data.


More information about the Lazarus mailing list