Just observing the thread I'd like to add some real world examples where OpenMP like additions can be very effective. Not because something can't be done otherwise, but because it has syntactical advantages. That said, even with the addition of a "parallel for" syntax and the like (paralell while or parallel until might be a bit nicer; or parallel for in) MT programming is never easy and an easy syntax might fool a programmer who lacks a good understanding of MT.

Examples (I am with Boian here) are DSP and webservers.
DSP often requires multiple sequential operations over buffers (effects processing). This is multi core kintergarten! If I can avoid the typing overhead by writing something like:

   Parallel For Effect in Effectchain do
         ProcessBuffer;

This is where I do a lot of MT as a hobby.
Compare the operator overloading syntax that I use here as well:
I can write EndBuffer := EndBuffer + Effect[i] where EndBuffer is a record or class that encapsulates the buffer (I am experimenting with rewriting DC-DSP like that).

Florian, you probably agree this is a more favorable syntax than accessing all samples with loops all the time.

That would be very comfortable...and more efficient than all sequential programming, although it can be done in the way Florian describes (at the cost of a higher RSI risk ;) )


Also: in the case of heavily loaded webservers or SOA applets/servlets/services, where the bus is no bandwdth issue, a "paralell for" syntax might be beneficial in writing concise code.
This is where I do a lot of MT processing in practise at work.
The actual machines are 8 cores and most apps are single in, distributed out.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to