1、erlang端的编写
http://www.iteye.com/topic/182040
打开多个port,使用supervisor、pg2等
erlang为与外部通信,需写port驱动,主要考虑下面的因素:
0、 和什么程序通信(perl)
1、 如果外部程序crash,要可以重启它;
2、 为了使串行访问不引入系统瓶颈,需要启动多个拷贝;
每种port对应一个supervisor,它监督一个process group,其中每个process对应一个port(调用open_port和port_close),每个process(对应port)是一个gen_server。
为了统一管理多种port,可以在所有种port的supervisor之上再增加一个supervisor。
编写process(对应port)时注意:
1、 start_link时使用{local, Id}选项,方便在appmon等程序中查看;
2、 init时需要process_flag(trap_exit, true);
3、 init时需要pg2:create(PortType);(必要时需要pg2:delete(PortType))
4、 init时需要pg2:join(PortType, Pid);(必要时需要pg2:leave(PortType, Pid))
5、 init时需要open_port();
6、 api_call时需要pg2:get_closest_pid(Type);(对本地的process产生随机访问的效果)
7、 handle_call时需要port_command(Port, Data);
8、 handle_call中port_command之后的receive可以不对超时进行处理,超时后异常,本process被重新拉起即可
supervisor时注意:
1、 start_link时使用{local, Id}选项,方便定位;
2、 init中返回{ok, {RestartStrategy = {one_for_one, MaxR = 3, MaxT = 10}, ChildSpecs}}
child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
Id = term()
StartFunc = {M,F,A}
M = F = atom()
A = [term()]
Restart = permanent | transient | temporary
Shutdown = brutal_kill | int()>=0 | infinity
Type = worker | supervisor
Modules = [Module] | dynamic
Module = atom()
3、 ...
2、C端的编写
http://cryolite.iteye.com/blog/361136
3、外部port和driver性能差异
http://chaoslawful.iteye.com/blog/310366
如何写高效的driver
http://mryufeng.iteye.com/blog/478664
分享到:
相关推荐
在 Erlang 中,Port Driver 是一种机制,允许 Erlang 进程与外部 C 库或者其他语言编写的程序进行通信。Port Driver 提供了一种方式,使得 Erlang 系统能够与外部世界交互,执行低级别的I/O操作或调用非Erlang代码...
Erlang MySQL Driver是用于Erlang编程语言的一个数据库连接驱动程序,专门设计用来与MySQL数据库进行交互。这个驱动程序提供了在Erlang环境中高效、可靠地执行SQL查询和其他数据库操作的能力。 `mysql_conn.erl` ...
EPMDPXY - Erlang 端口映射器守护进程的代理 EPMDPXY 模拟了 EPMD 的基本功能,足以让本地 Erlang 集群工作。 但有一个例外,它在处理PORT_PLEASE2_REQ时不是回复侦听器端口,而是生成一个内部侦听器并回复新的...
Port Driver (),它允许您通过 C 宏指定函数绑定来生成适合您需求的驱动程序。 然而,这种通用的内嵌驱动程序实现采用了不同的方法,为程序员提供了一个易于使用的界面,无需生成任何代码,也无需任何外部依赖。 ...
emongo 是另外一个 MongoDB 的 Erlang 开发包,已经多年没更新。示例代码:%% find documents where field1 is greater than 5 and less than 10 emongo:find(test, "collection", [{"field1", [{gt,...
本篇文章将重点介绍两种在Erlang中执行Linux命令的方法:`os:cmd/1` 和 `erlang:open_port/2`。 ### 1. `os:cmd/1` `os:cmd/1` 是Erlang标准库中的一个函数,它允许开发者直接执行Linux(以及Windows)系统命令。...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
在Erlang中,与C语言程序进行通信通常是通过端口(Port)机制来实现的。端口是Erlang提供的一种特殊机制,用于实现与外部程序的交互。下面详细介绍端口机制的工作原理: 1. **端口的创建** ```erlang YourPort = ...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson于1986年开发,主要用于构建高可用性、分布式系统。Erlang的设计目标是支持大量并发连接,容错性强,易于编写实时系统。Erlang采用actor模型...
Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性和处理大量并发连接的能力而被广泛应用于电信、互联网基础设施和实时系统。RabbitMQ...
Erlang支持编写外部接口程序(port drivers),它们可以用C语言等外部语言实现,以与外部世界通信。 #### 14. 系统监控和管理 Erlang的监控机制允许进程监控其它进程的状态,以便系统能够在进程失败时进行相应的...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性、并发性和内存管理机制而被广泛应用于网络通信、数据库系统以及消息中间件,如...
- **实现**: 通过`erlang:open_port/2`函数创建一个Port。 - **应用场景**: 实现Erlang与C语言编写的程序之间的交互。 #### 13. SMP支持 - **概念**: 支持多处理器或多核心架构下的并行计算。 - **实现**: 利用...
【Erlang编程语言及其应用】 Erlang是一种并发式、函数式的编程语言,由瑞典电信设备制造商Ericsson开发,最初用于构建高可用性、容错性和可扩展性的分布式系统。"xiandiao_erlang_Erlang课后习题_"这个压缩包文件...