Author:Serge Aleynikov Tranlator:David Overview:该文的读者需要熟悉gen_server和gen_fsm行为,使用gen_tcp模块进行TCP socket通信,主动和被动的socket模式,以及OTP监视原理。OTP为构建可靠的应用提供了一个方便的框架。该框架的实现,部分是通过抽象共同的功能到一个可服用的行为集合里面,例如链接到OTP监视层的gen_server和gen_fsm。有几个比较著名的TCP服务器设计。这里我们要讨论的包括,一个进程监听一个客户端连接并且为每个连接的客户端产生一个FSM进程。如今在OTP里 面可以通过gen_tcp模块来 Read More
posted @ 2014-03-01 10:34 风华一指流砂,苍老一段年华 Views(537) Comments(0) Diggs(0) Edit
声明:本文章是对erlang手册的部分内容的中文翻译,版权归原作者所有……由于本人的英语水平有限(翻译此手册的目的之一就是提高英语水平^0^),所以翻译有误乃正常现象,如有发现请及时提醒,THX……谨以此文献给初学erlang并且不喜欢看英文手册的朋友……ets模块ets模块摘要 内置的数据条目存贮描述该模块是erlang内置数据条目存贮BIF的接口.它具备在erlang运行系统中存贮大量数据的能力,并且访问数据的时间是常量级的。(在ordered_set中,访问数据的时间与数据量的对数成正比).数据被组织成可以存贮元组的动态表。每个表在进程中创建,当进程退出时,表自动销毁。表在创建时可以设置 Read More
posted @ 2014-03-01 10:20 风华一指流砂,苍老一段年华 Views(1036) Comments(0) Diggs(0) Edit
pg2这个模块实现了进程组的功能。这个模块之前有个模块为pg,pg模块的进行组中消息将被发送到组内的每个进程,但是pg2却不同,它可以选择性地将 消息发送给单个、某些或全部组内成员。通过进程组的名称可以访问组内的进程,例如进程组的名称为foobar,而且有一系列进程位于组内,可能这些进程位 于不同的节点上,都可以成为foobar的成员。不能够直接向foobar发送消息,但是通过方法get_members/1 和 get_local_members/1获取的组内的进程,然后可以与查出的进程通信。下面是一些示例:%%通常pg2服务器不需要明确显示的启动的,而是在需要的时候动态的启动,%%例如你调用 Read More
posted @ 2014-03-01 10:18 风华一指流砂,苍老一段年华 Views(387) Comments(0) Diggs(0) Edit
前言这是翻译erlang官方文档中的 erts-5.9.2的erl_nif部分。翻译完了。水平有限,我就把这个当作是我自己使用了,以后也会继续完善的。erlang nif 中文手册 概括 功能 初始化 数据类型 接口-资源分配类 接口-线程操作类 接口-类型操作类概括NIF库包含了erlang模块的一些方法的原生实现。这些NIF方法的调用方式跟其他普通方法的调用一样,但是每个NIF函数都要用erlang对应的实现,如果NIF库成功载入,在调用NIF函数之前,会先调用对应的erlang实现的函数。一个典型的用法是:根实现方法用作抛出异常。有时候当果系统没... Read More
posted @ 2014-03-01 10:16 风华一指流砂,苍老一段年华 Views(1327) Comments(0) Diggs(0) Edit
背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。我们假设读者都已经很熟悉 Linux 平台上基本的线程编程的 Pthread 库 API 。其他的第三方用以线程编程的库,如 boost,将不会在本文中提及。本文中主要涉及的题材包括线程开发中的线程管理,互斥变量, Read More
posted @ 2014-03-01 10:13 风华一指流砂,苍老一段年华 Views(192) Comments(0) Diggs(0) Edit
IO模型在Richard Stevens的《UNIX网络编程,第一卷》(程序猿必备!)一书中有非常详尽的描述,以下简要介绍,并给出代码示例。另外比较好的总结性blog,推荐:使用异步 I/O 大大提高应用程序的性能IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)常见网络IO模型:阻塞式IO、无阻塞式IO、IO复用、异步IO、信号驱动阻塞式IO:在一个进程发出IO请求后,进入阻塞状态,直到内核返回数据,才重新运行,如图:代码sever端: #include #include #include #include #include ... Read More
posted @ 2014-03-01 09:50 风华一指流砂,苍老一段年华 Views(276) Comments(0) Diggs(0) Edit
普通的new type(value)会在堆上开辟一个地址空间,而new (addr)type(value) 看似类似new type(value),实际却不同。new (addr)type(value)只是把addr里的值更改为value,而不会新开辟一个空间。 Read More
posted @ 2013-12-07 18:48 风华一指流砂,苍老一段年华 Views(166) Comments(0) Diggs(0) Edit