[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.
Michael.
More information about the Lazarus
mailing list