`
fantasytree
  • 浏览: 27203 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Erlang使用心得(二)

阅读更多
(1)关于gen_server的同步、异步消息处理的并发问题,即gen_server在处理handle_call的时候来了一个handle_info,会怎么处理?答案是无论同步异步,都是按照来的顺序one by one处理。

参考帖子:
http://youdao.fqdaili.com/baidu.com.php?u=9414a3d8bcb2ffaOi8vZXJsYW5nLjIwODY3OTMubjQubmFiYmxlLmNvbS9nZW4tc2VydmVyLWhhbmRsZS1pbmZvLXZzLWhhbmRsZS1jYWxsLXRkMjI0OTU3NS5odG1s&b=15

(2)关于process的调度(转)
引用
首先明确一点,Erlang的process的调度是抢占式的,而非couroutine的协作式的。其次,Erlang早期版本是只有一个调度器,运行在一个线程上,随着erts的发展,现在erlang的调度器已经支持smp,每个cpu关联一个调度器,并且可以明确指定哪个调度器绑定到哪个cpu上。第三,Erlang的调度也是采用优先队列+时间片轮询的方式,每个调度器关联一个ErtsRunQueue,ErtsRunQueue内部又分为三个ErtsRunPrioQueue队列,分别对应high,max和normal,low的优先级,其中normal和low共用一个队列;在Erlang中时间片是以reduction为单位,你可以将reduction理解成一次函数调用,每个被调度的process能执行的reduction次数是有限的。调度器每次都是从max队列开始寻找等待调度的process并执行,当前调度的队列如果为空或者执行的reductions超过限制,那么就降低优先级,调度下一个队列。
分享到:
评论

相关推荐

    erlang rebar 二进制

    erlang rebar 二进制

    在erlang项目中使用protobuf例子

    在这个文件中,你可以看到如何创建protobuf消息对象,调用`encode_msg`将其转换为二进制格式,以及如何接收二进制数据并使用`decode_msg`恢复原始消息。 6. **Erlang与protobuf的交互**:Erlang的并发和分布式特性...

    erlang整理的一些心得和lunix查看cpu和内存信息的方法

    ### Erlang 心得 1. **并发处理**:Erlang 的核心特性之一是其内置的并发模型。它使用轻量级进程(Lightweight Processes, LWP)实现并发,每个进程占用资源少,易于创建和通信,使得处理大量并发任务变得高效。 2...

    Erlang程序设计(第二版)及源码

    本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用...

    erlang编程 Introducing Erlang

    分布式Erlang使用虚拟机(VM)的克隆,使得构建大规模分布式系统变得简单。 ### 7. 错误处理与恢复 Erlang采用“let it crash”哲学,鼓励程序在遇到错误时立即崩溃,而不是尝试恢复。这样可以快速暴露问题,便于...

    erlang使用post方式发送json数据

    学习erlang的时候尝试编写的小例子,使用post方式发送json数据来进行http请求,希望能帮到大家~

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    erlang资源

    1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二进制)、控制结构(如case表达式和if语句)以及函数定义。 2. **函数式编程概念**:Erlang是纯函数式语言,书中可能会介绍函数式编程的基本...

    erlang_版本24.3.4.4

    5. **安装**:最后,使用`make install`将编译好的Erlang二进制文件安装到你的系统路径。在某些系统上,你可能需要管理员权限执行此操作。 Erlang的主要特性包括: - **并发性**:Erlang的进程模型是轻量级的,...

    Erlang23_3.zip

    "linux版本"的提法暗示了这个压缩包还可能包含适用于Linux操作系统的Erlang二进制文件。Linux是Erlang广泛应用的平台之一,因为其开源特性和对并发处理的良好支持与Erlang的理念相契合。 在实际使用Erlang时,...

    Erlang 20.3linux安装包

    1. **下载**:你可以从Erlang Solutions官网或者通过提供的压缩包文件"Erlang 20.3linux░▓╫░░ⁿ"和"Erlang 20.3linux安装包"下载Erlang的Linux二进制包。 2. **解压**:解压缩下载的文件到一个合适的目录,...

    erlang二进制共享对象的存储方式

    ### Erlang二进制共享对象的存储方式 #### 引言 随着计算机技术的发展与进步,数据处理的速度和效率成为了衡量系统性能的关键因素之一。在众多优化策略中,缓存技术因其能显著提升数据访问速度而备受关注。本文将...

    erlang22最新下载包

    4. **安装**:完成编译后,使用`sudo make install`将Erlang安装到系统路径中。 对于开发者来说,了解这些更新和变化至关重要,因为它们可能影响到现有项目的行为,或者提供新的工具和技术来解决特定问题。学习和...

    xiandiao_erlang_Erlang课后习题_

    "xiandiao_erlang_Erlang课后习题_"这个压缩包文件包含了Erlang程序设计第二版的课后习题源码,这对于学习和深入理解Erlang编程至关重要。 Erlang的特点: 1. **函数式编程**:Erlang基于函数式编程范式,强调无副...

    erlang25.0 windows版本

    在使用Erlang进行开发时,你可能需要用到以下工具和概念: - **Rebar3**:Erlang的构建和依赖管理工具,帮助你组织项目结构、编译代码和管理依赖。 - **OTP(Open Telephony Platform)**:Erlang的核心库,包含...

    erlang程序设计第二版课后习题答案(精简版).zip

    《Erlang程序设计第二版》是一本深入探讨Erlang编程语言的书籍,它旨在帮助读者掌握Erlang的核心概念和技术,以实现高并发、容错性和分布式系统的开发。课后习题是学习过程中不可或缺的一部分,它们能够检验并巩固...

    使用erlang连接ES的客户端

    本文将详细讨论如何使用Erlang作为客户端来连接并操作Elasticsearch服务器。 首先,为了连接Elasticsearch,我们需要一个Erlang的客户端库。目前,有多个Erlang库可以实现这一功能,如`es_client`可能就是这样的一...

    erlang9.rar

    在使用Erlang进行开发时,了解Erlang的REPL(Read-Eval-Print Loop)是很有帮助的,通过erl命令启动,可以快速测试代码和调试问题。Erlang还有强大的模块系统,每个文件对应一个模块,模块内包含函数定义。 OTP库...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    两本erlang电子书

    OTP(Open Telecom Platform)是与Erlang一起使用的框架和库,旨在简化并发应用程序的设计和维护。这两本电子书——《Erlang and OTP in Action》和《Erlang程序设计》——都是深入学习Erlang语言和OTP的宝贵资源。 ...

Global site tag (gtag.js) - Google Analytics