[Lazarus] parallel loop: was Threads in Lazarus code base

Mattias Gärtner nc-gaertnma at netcologne.de
Wed Sep 15 16:09:56 CEST 2010


Zitat von Florian Klaempfl <florian at freepascal.org>:

> Am 15.09.2010 15:26, schrieb ik:
>>
>>
>> On Wed, Sep 15, 2010 at 15:16, Florian Klaempfl <florian at freepascal.org
>> <mailto:florian at freepascal.org>> wrote:
>>
>>     Am 15.09.2010 13:56, schrieb Michael Schnell:
>>     > My impression is that regarding the OS-interface of a program that
>>     needs
>>     > the said features (multiple "logical threads", performance, latency,
>>     > making use of modern SMP systems, ...), threads are a necessity. But
>>     > programming languages might be able to in many cases hide the dirty
>>     > details from the programmer (e.g. "parallel" loops, see the Delphi
>>     Prism
>>     > and/or .NET documentation on these issues.) If FPC could be
>>     enhances tn
>>     > that direction it might be a decent improvement.
>>
>>     The parallel loop solves nothing which makes threading hard and is only
>>     a cheap excuse. The real problems of threading are synchronization and
>>     especially abording threads e.g. triggered by the main thread.
>>
>>
>> So how do you do multiple sub routines "at the same time", or some tasks
>> that will hang your system but you require it to function even when it
>> does the heavy work ?
>
> It depends on the application. But as I said before: aborting something
> like a parallel loop because the user pressed e.g. ESC isn't easy either.

It's not that hard either.
Parallel loops/procedures are not as important as some compiler  
vendors are saying, but implemented in the compiler they can save a  
lot of type work and allow to reduce some overhead. The alternative is  
to create an IDE plugin to parallelize a loop as described here
http://wiki.lazarus.freepascal.org/Parallel_procedures#Example:_Parallel_loop


Mattias







More information about the Lazarus mailing list