Where to start serious parallel (multithreaded, parallel?) Programming

I would like to seriously start multi-threaded / parallel / parallel programming in the real world. By this I mean an attempt to solve real problems in parallel and simultaneously, and not just study the details of low level pthread or MPI , blocking, race, etc. Or academic examples of textbooks. As for the low-level mechanism of parallel programming, in fact, I would rather not know anything about them and just stick to something more than the Actor model :).

I heard that some programming languages ​​are inherently similar to what I'm looking for, and their paradigm is to consider the problem in a parallel (parallel, multi-threaded, multi-processor) way and provide language level tools and (for example, Erlang has a concept process as a language construct?).

I need a language with a system like Scala ... I know PHP very well and I often did a lot of coding in C / C ++. I have a working knowledge of Scala and Java, and I can read Haskell, but I'm not particularly good at it. I am well acquainted with the functional paradigm and I am ready to learn much more. I am also interested in high-level theoretical discussions about parallelism / concurrency.

+4
source share
1 answer

I would like to mention first that parallel! = Parallel. They are closely related by concepts, but parallel computing differs from parallel computing in that parallel control flows occur simultaneously, while parallel flows can alternate, but can be parallel. Fine hair to crack, but one that is important to understand.

... provide tools and language level constructs for parallel task implementation (for example, does Erlang have a concept of the process as a language construct?).

The Erlang process is a small, insulated green thread. The language does not contain shared memory constructs; data is transferred between parallel control flows through “messages”. The notification is called "simultaneous." Erlang is explicitly designed as a parallel language, and, be that as it may, they plan some control flows - which map 1: 1 to processes - in parallel. Erlang does not give you explicit control over scheduling, which is in contrast to the streaming model.

It’s hard to know what you are looking for - your question is quite wide - but any of the languages ​​you mentioned (except maybe PHP?) Will allow you to use several processors that, of course, are sitting on your computer. Choose a few to focus, expect to spend several years of training and go for it.

+2
source

Source: https://habr.com/ru/post/1498899/


All Articles