GenServers:构建城市,而非摩天大楼
在当今的编程语言中,Elixir拥有出色的并发模型。很多人听闻Elixir能在所有CPU核心上自动扩展,因此对其产生了浓厚兴趣。下面我们将深入探讨Elixir的并发机制,以及它与Ruby等语言的差异。
并行与并发
并行和并发一直是热门话题,在设计低成本高性能系统时尤为重要。高并行度的系统能在更少的机器上处理更多的并发请求。
- 并发并非并行 :并发和并行这两个术语常让人混淆。实际上,它们是不同但相关的概念。并发是指同时协调多个任务的能力。例如,在只有一个CPU核心的服务器上,并发能让该核心交织执行服务请求所需的任务,从外部看,请求似乎是同时处理的,但实际上并发任务只是在执行过程中重叠,不一定在同一时间点执行。而并行是指同时执行多个任务的能力,需要多个CPU核心才能实现,因为单个CPU核心一次只能运行一组指令。并行能提高系统吞吐量和整体性能,在应用中添加并行性通常能减少CPU的使用。并发是编程语言的特性,而语言的具体实现决定了如何实现并行性,存在并发但不并行的语言。
- Ruby的并发模型 :Ruby使用线程来实现并发,
Thread.new可以让一段代码与进程中的其他代码并发运行,并发代码的完成顺序是不确定的。例如:
irb> Thread.new{ puts "a" }; Thread.new{ puts "b" }
a
b
irb> Thread.new{ puts "a" }; Thread
超级会员免费看
订阅专栏 解锁全文
86

被折叠的 条评论
为什么被折叠?



