[Gambas-user] Multi threaded apps

Doriano Blengino doriano.blengino at ...1909...
Sun Sep 7 11:05:02 CEST 2008


Pino Zollo ha scritto:
> Alle 06:10, sabato 6 settembre 2008, Benoit Minisini ha scritto:
>   
>> Gambas interpreter was not designed to be multi-threaded at all.
>>
>> What sort of background process people want to do during their application?
>> I never had such a need.
>>     
>
> When the applications does a lot of asynchronous input/output background 
> processes simplify a lot the programmer's life and, possibly, the resilience 
> of the full application.
>
> You can think to objects as hardware components interconnected like chips on 
> the motherboard.
> Every one does his task and receives or sends data to other "objects" via a 
> pipe in place of a copper wire.
> When tcp/ip is involved any new connection on the same address, the same piece 
> of code is instantiated  handling the new connection, letting the kernel the 
> task of distributing the CPU power.
>
> Just for having a look to applications that use heavily multitasking (or multi 
> threads), my old applications in Modula-3 are available on my site 
> (http://www.qsl.net/zp4kfx/Linux )
>
> How these features can be implemented in GAMBAS I do not know not having any 
> idea about how it is implemented. 
>
> At the time of CP/M (does somebody remember it ?) and when the Z80 was running 
> a 4 MHz,  a wonderfull programming language, named FORTH, had a good success 
> and had a profound impact on my way of tinking programs...even now my gambas 
> program is conceived with the same logic.
> The BASIC of the HP-85 did share the same style:
> Every line of BASIC code was compiled, like FORTH, as a sequence of addresses.
> The interpreter had just to call in sequence those addresses.
>
> In such a kind of BASIC multitasking is implemented easily. (In FORTH too).
>
> and....yes I started with punched cards ;-)
>   
Dear Pino,

it is a pleasure for me to read about Z80, CP/M, Forth, HP-85 and so on. 
Like you, I started to program well before the PC was invented. But 
times are changed. Benoit is right when he says he never felt the need 
for multitasking; a correctly implemented event system can solve almost 
any problem. If you need a lot of TCP/IP sockets to keep running many 
connections, then you instantiate many "TCP socket object"s, with their 
event handler. When data arrive, the event handler sends reply. When 
data can be sended, another event handler is invoked, which sends data. 
No CPU time is wasted. The same can be done with files (not sure whether 
gambas can do non-blocking I/O on common files but, if it can not, it is 
another kind of problem). Modern approach is to eliminate polling and 
slow things, and replace them with events. Twenty years ago we did not 
have OOP and event driven applications. It is true that an advanced 
application can be written more easily having multithreading, but those 
advanced applications are very few, compared to the total number of 
application currently written in gambas. Asking for true multithreading 
is like asking for complex numbers: gambas does not have them, but still 
you can write an application which copes with them - this application 
will be more difficult to write, but will work pretty the same.

Once again, I would say that multithreading is, in some way, in contrast 
with the event-driven paradigm.
On the other hand, if gambas had multithreading, complex numbers, and 
other nice things, nobody would complain...

Ciao,
Doriano Blengino
























More information about the User mailing list