- 浏览: 35297 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
文章分类
最新评论
-
derlang:
mryufeng 写道方向很好哦多谢鼓励,共同进步
Erlang学习告一段落 -
mryufeng:
方向很好哦
Erlang学习告一段落 -
crackcell:
一起进步……
Erlang学习告一段落
http://www.trapexit.org/forum/viewtopic.php?p=44427
fuserlsrv采用gen_server behaviour,它是open_port的控制进程。
对从port来的消息,由fuserlsrv的回调函数handle_info处理,这里没有一个explicit request operation, 而是有gen_server自己进行消息派遣。
fuserldrv ----> port ----> fuserlsrv ----> Module:handle_info
handle_call处理显式调用gen_server:call产生的消息,同样,handle_cast处理显式调用gen_server:cast所产生的消息。不同的是,前者是同步的,后者是异步的。
详情可以参考gen_server的源码,也可以根据trace技术来了解程序的运行情况。Erlang在这些方面做的比较到位。
如此看来,fuserl的整个流程就比较清楚了。
首先mount fuse文件系统
后续针对该文件系统的所有操作,经过VFS机制,在fuse kernel module的辅助下,转到用户空间的fuserldrv进程(libfuse)。
fuserldrv把相应的请求通过fd 4发给port的控制进程,即fuserlsrv。
fuserlsrv采用gen_server behaviour,它是open_port的控制进程。
对从port来的消息,由fuserlsrv的回调函数handle_info处理,这里没有一个explicit request operation, 而是有gen_server自己进行消息派遣。
fuserldrv ----> port ----> fuserlsrv ----> Module:handle_info
handle_call处理显式调用gen_server:call产生的消息,同样,handle_cast处理显式调用gen_server:cast所产生的消息。不同的是,前者是同步的,后者是异步的。
详情可以参考gen_server的源码,也可以根据trace技术来了解程序的运行情况。Erlang在这些方面做的比较到位。
如此看来,fuserl的整个流程就比较清楚了。
首先mount fuse文件系统
后续针对该文件系统的所有操作,经过VFS机制,在fuse kernel module的辅助下,转到用户空间的fuserldrv进程(libfuse)。
fuserldrv把相应的请求通过fd 4发给port的控制进程,即fuserlsrv。
发表评论
-
Erlang应用列表
2010-11-02 17:47 774本文收集Erlang的应用列表,随时更新维护 WebS ... -
安装wx成功
2010-11-01 23:10 865今晚下定决心,要安装wx for Erlang,经过几个小时的 ... -
几个有趣的Erlang项目
2010-07-15 18:45 881Riak Scalaris CouchDB Disco ... -
mnesia schema management
2010-06-19 16:59 858Q: 加入一个新节点到Mnesia System &g ... -
日日亲近之
2010-06-03 19:19 29净空法师有一读书法:一门深入,长时熏修。细细想来,确有至理存在 ... -
学习erlang三个月小节
2010-06-01 21:44 831期间主要做了 - 看erlang programmin ... -
actors style of concurrent programming
2010-05-01 19:46 475from <<Programming in sca ... -
对Erlang的学习需要深入
2010-04-30 17:56 57用Erlang写了一个集群管理和监控系统,初具 ... -
Erlang标准库代码
2010-04-21 22:35 764欲掌握OTP,可以多读读Erlang标准库代码,rpc, os ... -
Erlang集群管理系统中遇到的一些小问题
2010-03-10 17:31 1465erlang节点之间的文件传输 # file:read_fil ... -
Erlang学习告一段落
2010-02-28 17:13 1168学习了一个多月的Erlang,很开阔眼界。最近在公司里建议用E ... -
开源项目egfs
2010-02-19 22:21 936在http://projects.trapexit.org/w ... -
为EFS提供C API
2010-02-17 18:32 932问题: EFS是我最近学习Erlang的过程中写的一个min ... -
Erlang interoperability
2010-02-17 16:33 707在HTML文档的 doc/tutorial下有文件(新添Mak ... -
mini code and tools
2010-02-17 12:09 581on startup: ./.erlang $HOME/.e ... -
Erlang中的各类文件
2010-02-15 10:45 755[按] 还是多看看这个http://erlangdisplay ... -
Erlang bytecode
2010-02-10 18:26 812http://mryufeng.iteye.com yufe ... -
Erlang的基准测试
2010-02-08 23:11 743需要测试Erlang系统各个方面的性能。 进程创建和并发 ... -
Erlang的代码加载过程
2010-02-08 23:05 607code:load_file/1 提个问题在这儿,慢 ... -
Erlang中的进程表示
2010-02-08 22:56 837test1() -> Pid = spaw ...
相关推荐
gen_server通过定义handle_call、handle_cast和handle_info等回调函数,使开发者能够灵活地管理服务器的状态变化。 在OCaml/Async中,我们可以借鉴这些设计原则来构建一个类似的系统。Async库提供了异步编程的支持...
这些回调函数包括`init/1`、`handle_call/3`、`handle_cast/2`、`handle_info/2`、`terminate/2`和`code_change/3`。gen_server通过调用这些函数来处理来自客户端的请求,进行状态管理,并在需要时进行状态迁移。 `...
4. `handle_info/2`: 处理其他消息,比如定时器触发或监控进程的状态变化。 5. `terminate/2`: 当服务器停止时,这个函数会被调用,用于清理资源。 6. `code_change/3`: 支持在运行时代码更新,接收旧版本的状态和新...
首先,`gen_server` 提供了一套回调函数,包括`init/1`、`handle_call/3`、`handle_cast/2`、`handle_info/2`、`terminate/2` 和 `code_change/3`。开发者需要在自定义模块中实现这些函数,以定义服务器的行为。`...
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). init(Args) -> {ok, UdtSocket} = gen_udt:open(), {ok, {UdtSocket, Args}}. handle_call(Request, _From, ...
例如,在 `handle_call/3` 中不要直接调用 `gen_server:call/2`,可以考虑使用 `gen_server:cast/2` 来异步处理消息。 ##### 3. gen_fsm详解 - **gen_fsm** 提供了一个框架用于实现有限状态机,适用于处理复杂的...
server`行为:Erlang的`gen_server`行为提供了一种标准方式来实现服务器进程,它包含了一系列的回调函数,如`init/1`(初始化)、`handle_call/3`(处理同步调用)、`handle_cast/2`(处理异步消息)和`handle_info/...
在gen_server和gen_fsm中,我们需要定义各种回调函数,如`init/1`、`handle_call/3`、`handle_cast/2`、`handle_info/2`和`terminate/2`等。这些回调允许我们处理不同类型的事件和消息,如系统消息、用户自定义消息...
send(Pid, Message) -> gen_server:cast(Pid, Message). handle_cast(Message, State) -> %% 处理消息的逻辑 {noreply, NewState}. ``` **4. 软类型和动态性** Erlang是动态类型的,这意味着类型检查发生在运行...
handle_call/3, handle_cast/2, handle_info/2]). -dialyzer([no_behaviours]). %%%=================================================================== %%% callbacks %%%========================...
`gen_server` 提供了一个标准的接口,包括 `start_link/3`(启动服务器并建立链接)、`handle_call/3`(处理同步调用)、`handle_cast/2`(处理异步消息)和 `handle_info/2`(处理其他信息)等回调函数。...
`handle_info/2`处理其他非预期的消息,这里没有特别的处理,所以返回{noreply, State}。 `terminate/2`在进程终止时清理资源,确保端口被正确关闭。 `code_change/3`处理代码更新,这是一个gen_server回调,但在...
- `handle_cast/2`: 处理异步消息。 - `terminate/2`: 在服务停止时被调用。 - `code_change/3`: 支持热更新(Hot code loading)。 #### 五、项目实施步骤 1. **环境搭建**: - 安装Erlang/OTP。 - 配置`$ERL_...
5. **接收和发送数据** - 当`handle_info/2`接收到新连接时,我们需要接受连接(`:inet.accept(socket)`),并开启一个新的进程来处理这个连接。在新的进程中,我们可以用`:gen_tcp.recv(socket, 0)`来接收客户端的...
* Handle size_t printf with "%lu" and (unsigned long) cast * Add support for d-trust cards / improve micardo 2.1 driver New in 0.11.0; 2006-05-01; Andreas Jellinghaus * compile fixes/improvements for...