multithreading - 从哪里开始认真的并发(多线程、并行?)编程

标签 multithreading scala parallel-processing erlang

我想在现实世界中认真开始多线程/并行/并发编程。我的意思是尝试并行地解决真实问题,而不仅仅是了解 pthread 的低级细节。或MPI 、锁、种族等或学术、教科书的例子。关于并行编程的低级机制,事实上我宁愿对它们一无所知,而只是坚持使用更像 Actor 模型的东西:)。

我听说某些编程语言本质上就像我正在寻找的语言,它们的范例是以并行(并发、多线程、多处理)方式查看手头的问题并提供语言级工具和并行执行任务的构造(例如,Erlang 有一个 process 的概念作为语言构造?)。

我喜欢一种具有像 Scala 这样的类型系统的语言...我非常了解 PHP,并且我曾经用 C/C++ 进行过很多编码。我有 Scala 和 Java 的工作知识,我可以阅读 Haskell,但我并不特别精通。我对函数范式非常熟悉,并且愿意了解更多。我也对有关并行性/并发性的高级理论讨论感兴趣。

最佳答案

我想首先提到并行!=并发。它们是密切相关的概念,但并行计算与并发计算不同,因为并行控制流同时发生,而并发可能是交错的,但可能是平行的。这是一件很容易分开的事情,但理解这一点很重要。

... provide language level tools and constructs to implement the task in parallel (e.g. Erlang has a concept of process as a language construct?).

Erlang“进程”是一个轻量级、内存隔离的绿色线程。该语言不提供共享内存结构;数据通过“消息”在并发控制流之间传递。通知说是“并发”。 Erlang 被明确设计为一种并发语言,并且恰好会并行地安排一些控制流(将 1:1 映射到进程)。 Erlang给你对调度的显式控制,这与线程模型不同。

很难知道您在寻找什么 - 您的问题相当广泛 - 但您提到的任何语言(也许 PHP 除外?)都将允许您利用肯定位于其中的多个 CPU你的电脑。选择几个重点,期望花几年时间学习并努力去做。

关于multithreading - 从哪里开始认真的并发(多线程、并行?)编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18437162/

相关文章:

C++ 线程函数说明

multithreading - rust tokio::spawn 在 mutexguard 之后等待

excel - flink InputStream 类 org.apache.commons.compress.archivers.zip.ZipFile$1 没有实现 InputStreamStatistics

scala - Play framework 2.2 Slick 依赖问题

r - 抑制 R 中的静态代码检查( future 包)

multithreading - 操作系统是否知道应用程序线程?

python - Python 中的多线程爬虫真的可以加快速度吗?

json - 在 Play2 中将 Scala 列表序列化为 JSON

python - GridSearchCV 和 Google colab : n_jobs=-1 does not work

c++ - tbb::concurrent_hash_map 抛出 SIGSEGV