gen_server: handle_cast VS handle_info

[url]http://www.trapexit.org/forum/viewtopic.php?p=44427[/url]

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。

[img]http://dl.iteye.com/upload/attachment/206765/24abeaf4-7d6d-3292-93e6-3ec69804f437.jpg[/img]
第 18 章:ART 运行时 Android运行时(ART)是Android应用的执行环境,负责加载和执行DEX字节码。ART通过多层级编译策略(解释器、JIT、AOT)和并发垃圾回收(如CC和CMC收集器)优化性能。关键组件包括类链接器、dex2oat编译器、JIT编译器和内存管理系统。ART支持模块化更新,并通过配置文件引导优化(PGO)提升应用性能。调试能力基于JVMTI,提供断点、类重定义等功能。Android 17引入了多项改进,如分代标记-压缩GC、禁止反射修改static final字段、DEX容器格式V41等。ART架构 阅读详情

相关推荐

gen_server启动,关闭,消息收发分析

https://www.cnblogs.com/hzy1987/p/5441807.html http://www.cnblogs.com/me-sa/archive/2011/12/20/erlang0023.html 介绍: gen_server是OTP的一个behavior, 在behavior基础上快速构建出可用且可靠的功能. behavior是进程模式的规范化,把代码分成两部分,一部分是...

lewiskyo的专栏 1488

gen_server笔记

gen_server笔记 by cnDenis http://cndenis.iteye.com 2013年4月24日 gen_server是erlang的OTP框架中最常用的“行为模式”了吧,至少几本erlang教材都是首 先介绍这个。 这东西用来做什么的呢?或者说,为什么要用这东西呢?由于我接触这东西不过几天, 理解尚非常粗浅,就我看来,用gen_server有以下几个好处: ...

cnDenis的专栏 363

erlang面试经(2)

面试经(2)一、OTP相关二、定时器三、运算符四、算法五、Erlang有哪些运算符六、请写出Erlang条件表达式、循环七、如何匹配binary(二进制位也就是字节,默认的话是比特位)从第三字节开始的八、请举例替换二进制字符串中的指定字符串九、怎么使用Erlang语言实现Key和Value的存储十、跨进程通信、跨节点(服务器)通信方式有哪些十一、请简述一下服务器上线出问题处理的流程十二、有哪些调试...

小老鼠啊的博客 3148

gen_server的回调结构下

举个例子,如 果服务器连接到另一个进程并捕捉退出信号,就可能会突然收到一个预料之外的{'EXIT', Pid, What}消息。服务器会因为许多原因而终止。某个以handle_开头的函数也许会返回一个{stop, Reason, NewState},服务器也可能崩溃并生成{'EXIT', reason}。在所有这些情况下,无论它们是怎样发生的,都会调用terminate(Reason, NewState)。如果想让服务器过后重启,就必须编写一个“我胡汉三又回来了”的函数,由terminate/2 触发。

weixin_48092769的博客 146

Erlang消息传递学习笔记

Erlang的gen_server模块导出了一些函数,允许开发者可以同步式或者异步式发送消息,为开发者隐藏了并发编程和错误处理背后的复杂性。

zuimrs的博客 673

OTP_Server.exe

一次性口令 服务器端

erlang四大行为模式

文章有转载复制其他博客内容,如有侵权,请联系删除首先来简单说下 行为模式, ****是面向进程编程中各种常见模式的一种形似化表述.OTP行为模式 将 一些反复出现的模式分成了两部分:和, 二者通过一套简单明确的接口进行通信.init/gen_server。

qq_37232457的博客 1629

《UVM实战》学习笔记——第三章UVM基础

uvm基础,常见的派生类,config db机制,打印信息等

qq_42135020的博客 5178

erlang面试

erlang常见问题: 1. erlang四大行为模式gen_server方法 2. 定时器 3. start和start_link

keep it simple,stupid 1856

SUMO仿真教程(1) ——安装环境的设置(Windows 10系统)

SUMO安装环境的设置 目录一.SUMO下载的官方网址二.下载步骤:三.环境设置:1.打开设置环境变量的界面2.用户(Administrator)变量设置3.系统变量设置四.总述 一.SUMO下载的官方网址 sumo的下载地址: 二.下载步骤: 1.以sumo1.8.0为示例进行演示,点击下载地址; 2.选择Windows64位的安装版本,如下图所示: 3.点击对应版本会跳转到如下图所示的界面,等待几秒后会自动下载(温馨提示:请将下载路径提前设置好): 4.到目标存储路径下查看下载完成的SUMO(本

weixin_50632459的博客 1万+

YOLOv8模型INT8量化实战:解决sigmoid输出归零的坑(附代码修改)

本文详细介绍了YOLOv8模型INT8量化过程中遇到的sigmoid输出归零问题及其解决方案。通过修改模型导出代码、优化ONNX量化流程,并提供完整的部署优化技巧,帮助开发者在边缘计算设备上实现高效的模型推理。文章还包含量化效果验证和常见问题排查方法,助力开发者快速解决实际部署中的难题。

vvv99的博客 253

gen_server的回调结构(上)

我们已经见过了gen_server:call和handle_call之间的交互,它的作用是实现远程过程 调用。gen_server:cast(Name, Msg)则实现了一个播发(cast),也就是没有返回值的调用(实 际上就是一个消息,但习惯上称它为播发来与远程过程调用相区分)。gen_server:start_link(Name, Mod, InitArgs, Opts)这个调用是所有事物的起点。它 会创建一个名为Name的通用服务器,回调模块是Mod,Opts则控制通用服务器的行为。

weixin_48092769的博客 185

【多模态大模型】GLIP:零样本目标检测新范式与视觉语言理解

本文深入解析了多模态大模型GLIP在零样本目标检测和视觉语言理解领域的创新应用。GLIP通过统一目标检测与自然语言理解任务,实现了零样本学习能力,能够精准定位复杂文本描述对应的图像区域。文章详细介绍了GLIP的核心技术、数据策略及实战表现,并对比了与其他多模态模型的差异,为AI视觉理解提供了新范式。

weixin_29186249的博客 264

PON-Beam:在BEAM运行时内建通知导向的消息分发机制

在高并发与实时交互场景下,业务系统常面临事件通知延迟高、消息吞吐受限、链路可观测性差等挑战。Erlang语言以其轻量进程与消息传递模型闻名,其运行载体BEAM虚拟机能够支撑海量并发进程,但面对“通知导向”的数据交换需求,仍缺少内建的发布订阅与精准投递能力。PON-Beam作为一种面向通知的架构设计,在BEAM之上构建通知代理层,通过声明式订阅、事件过滤与可配置投递策略,实现生产者与消费者的彻底解耦。该机制将订阅关系、重试逻辑、背压控制等从业务代码中抽离,适合订单状态同步、设备数据推送、实时状态监控等典型场景

weixin_33863087的博客 404

嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)

本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。

yoga7的博客 1035

瑞芯微RK3588部署YOLOv8模型

写下这篇博客进行记录,以防后面忘了怎么部署。

weixin_45303602的博客 3675

深入理解OTP Application:从概念到实践的运行时容器解析

在构建高可用、可维护的分布式系统时,进程管理与生命周期控制是核心挑战。Erlang/OTP框架通过标准化的组件抽象来解决这些工程化问题,其中OTP Application作为关键容器,定义了组件的生命周期、依赖关系和运行时行为。其原理基于静态资源文件与动态进程树的映射,通过Application Master、回调模块和根监督树三层结构实现统一管理。这一设计为系统提供了开箱即用的启动顺序控制、配置管理和错误隔离能力,特别适用于需要7x24小时运行、支持热更新的电信或即时通讯场景。通过理解OTP Applic

weixin_30326515的博客 315

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 819

深入解析Erlang/OTP Runtime Application:从概念到实战构建高可用系统

在分布式系统架构中,应用容器是组织和管理进程的核心单元,它通过统一的声明式配置和生命周期管理,为高并发服务提供基础支撑。其原理在于将相关进程模块化打包,通过监督树机制实现进程的启动、监控和容错恢复,从而提升系统的可维护性和可靠性。这一技术价值在于能够构建出具备“任其崩溃”哲学的高可用服务,广泛应用于电信、金融和即时通讯等对容错性要求极高的领域。本文聚焦于Erlang/OTP的Runtime Application,通过拆解其启动流程和实战构建,帮助开发者掌握这一核心框架。文中涉及的**监督树**和**进程容

weixin_34189116的博客 308

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 993

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

机器学习生产化七道生死关:从Notebook到高可用gRPC服务

机器学习模型部署不是简单的代码迁移,而是从探索性分析(Notebook)到工业级服务(Production)的系统性跃迁。其核心在于理解数据、计算与接口三重契约断裂的本质——训练时的静态假设在真实流量中必然失效。关键技术价值体现在故障域隔离、强Schema治理、确定性特征工程与业务对齐的分层监控上。典型应用场景包括实时风控、个性化推荐与反欺诈等毫秒级响应系统,尤其当面临脏数据洪流、上游字段变更、CUDA内存抖动或法务合规突袭时,本文所提炼的七道关卡提供可落地的防御体系与工程检查清单。

weixin_34087307的博客 415

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

erlang编程的那些事儿

1、mnesia表与ets表记录的差别       mnesia表记录查询后会带有表名,ets表查出的记录是不带表名的。 2、gen_server的handle_call使用       handle_call是同步调用,必须有返回值,在handle_call中执行的任务不能占有太多的时间,否则客户端因无法及时得到返回值会报异常,因过测试handle_call执行任务时间不能大于5s。如果要

zcc_0015的专栏 935

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

erlang gen_server 源码分析 1

  首先,类型的语法,源代码中使用的-callback,现在的新的语法应该已经和-spec一样了,即前者的功能后者也可以实现了,因此在erlang编程设计中也是使用-spec。同时,这里的对于函数的测试,一般都是返回一个元组{ok, ...}。     这里首先调用gen:start,后者通过start函数来调用do_spawn函数,do_spawn则调用proc_lib的start或者sta...

读书,反思 793

Erlang --- gen_server

行为模式 gen_server代表的就是“行为模式”的一种,行为模式的目的在于为特定类型的进程提供一套模板。 启动服务器 用来启动服务器的有start/3,start/4,start_link/3,start_link/4这四个函数。 使用这些start函数之后,就会产生一个新的进程,也就是一个gen_server服务器。这些 start函数的正常情况下返回值是{ok,Pid},P...

weixin_30679823的博客 170

handle_info 和handle_call里调用call 会超时

handle_call是同步调用,肯定不能call, handle—— handle_info 和handle_call里调用call 会超时

sdsabc2000的专栏 1690

驱动中枚举和关闭内核句柄

WIN64AST的作者之前发布了一些教程,里面有关于关闭内核句柄的介绍,但是他忘了一件事,所以那份代码并不能真正的关闭内核句柄,而且他的代码。。。不敢用在项目里。有人在看雪上问过类似问题,我也回答过,在vista之后,windows会检查内核句柄值得有效性,也就是为什么下面我提供的代码中会有这一行: *(PULONG64)HandleValue |= (ULONG64)KERNEL_HANDLE...

liwen930723的专栏 2498
上一篇: 开源项目egfs
下一篇: 云存储浅析
kernel121
博客等级 码龄16年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值