`
fantasytree
  • 浏览: 27442 次
  • 性别: 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整理的一些心得和lunix查看cpu和内存信息的方法

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

    erlang emysql

    为了更好地理解emysql的使用,我们可以参考给出的博文链接(虽然实际链接无法在这里查看,但通常博主会分享具体代码示例和使用心得)。例如,博主可能会展示如何配置emysql,创建连接,发送查询请求,以及如何处理...

    erlang的学习pdf

    #### 二、Erlang的基本概念 1. **进程(Process)**:Erlang中的进程是非常轻量级的,每个进程占用的内存很少,并且独立于其他进程运行。这意味着一个进程的失败不会影响到其他进程。 2. **消息传递(Message ...

    C语言开发的SML程序.zip

    1.1.2 第二次实验 3 1.1.3 第三次实验 4 1.2 选题动机 4 2 函数式编程语言的家族成员及其简介 6 2.1 静态类型的函数式编程语言 6 2.1.1 ML 6 2.1.2 Miranda 7 2.1.3 Haskell 7 2.1.4 OCaml 8 2.1.5 Scala 9 2.1.6 F#...

    函数式编程报告template1

    **二、上机实验心得体会** 1. **SML/NJ使用体验** - Standard ML of New Jersey (SML/NJ) 是一个强大的函数式编程环境,其静态类型系统提供了良好的错误预防。在实验过程中,我深入理解了模式匹配、高阶函数和数据...

    CS1807-U201814745-朱槐志函数式编程1

    二、上机实验心得体会 在实际的上机实验过程中,我深入体验了函数式编程语言的精髓。首先,我发现函数式编程强调逻辑的纯粹性,避免了副作用,这使得代码更易于理解和测试。其次,递归在函数式编程中占据重要地位,...

    rabbitmq_demo及安装.rar

    本资料"rabbitmq_demo及安装.rar"提供了关于RabbitMQ的安装教程、应用心得以及一个结合Spring框架的简单DEMO,下面将详细介绍相关知识点。 1. **RabbitMQ安装** - **系统要求**:RabbitMQ可以在多种操作系统上运行...

    通信网排队论读后感

    丹麦工程师爱尔兰(A.K.Erlang)在其1909年的论文中首次引入了这一理论,用概率论的方法分析电话交换系统,为后来的通信网络优化提供了基础。 排队论的核心在于研究随机服务系统,即那些由不确定到达的顾客和服务...

    程序员能力矩阵——包括数据结构等

    - **log(n) (Level 3):** 除了掌握并发语言(如Erlang)和逻辑语言(如Prolog)外,还能灵活运用不同类型的编程语言来解决问题。 #### 代码库知识 (Repository Knowledge) - **2^n (Level 0):** 对代码库完全没有...

Global site tag (gtag.js) - Google Analytics